春天属性解析器如何工作?

时间:2015-03-12 16:50:49

标签: java spring

我的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

我需要知道在解析这些属性时涉及哪些spring代码/类。 我如何调试和解决这个问题?

2 个答案:

答案 0 :(得分:2)

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

使用XML,您可以使用

执行此操作
<context:property-placeholder location="classpath:spring.properties" />

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

答案 1 :(得分:0)

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

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

要阅读环境变量,请使用

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

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