【问题标题】:how spring property resolver works?spring 属性解析器如何工作?
【发布时间】:2015-03-12 16:50:48
【问题描述】:

我的 spring context.xml 文件中有属性占位符

<bean id="propertyConfigurer" class="com.techpleiad.poc.RMCPropertyUtil">
        <property name="basenames" value="file:${config.file.dir}/prop_application" />
        <property name="defaultEncoding" value="UTF-8" />
        <property name="cacheSeconds" value="30"></property>
    </bean>

并且这个属性 'config.file.dir' 没有得到解决。

'config.file.dir' 是 环境变量,当我调试代码并检查基本名称时,文件路径按原样出现。'{config.file. dir}/prop_application'

我需要知道解决此类属性涉及哪些弹簧代码/类。 我该如何调试和解决这个问题?

【问题讨论】:

  • 澄清没有得到解决basenames 的值是字面意义上的file:${config.file.dir}/prop_application 吗?还是你有例外?
  • config.file.dir 在属性文件中吗?
  • 编辑了问题..希望它能澄清问题陈述..

标签: java spring


【解决方案1】:

您需要注册 PropertySourcesPlaceholderConfigurer 并引用您的属性源(或者不需要,因为这是隐式添加的环境属性)。

使用 XML 你可以做到这一点

<context:property-placeholder location="classpath:spring.properties" />

使用 Java 配置,只需定义一个 static @Bean 带注释的方法,该方法返回一个 PropertySourcesPlaceholderConfigurer

【讨论】:

    【解决方案2】:

    您可以尝试使用Spring SpEL 获取系统属性

    #{systemProperties['config.file.dir']}
    

    读取环境变量使用

    #{systemEnvironment['config.file.dir']}
    

    systemEnvironment 属性包含运行程序的机器上的所有环境变量。同时,systemProperties 包含我们在应用程序启动时使用 -D 参数在 Java 中设置的所有属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多