我使用的是spring 4.1.0.RELEASE和log4j 1.2.14。 我使用下一行来加载和解析属性:
<bean class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer" id="propsResolver">
<constructor-arg>
<bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config">
<bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="passwordEnvName" value="ENC_KEY" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="location" value="${properties.file}"/>
<property name="searchSystemEnvironment" value="true"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
在log4j配置中,我有:
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/path/to/myfile-${instance}.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] %d %c - %m%n"/>
</layout>
</appender>
在${properties.file}
我有&#39;实例&#39;属性。所以我运行了我的代码的几个实例,并希望每个实例都登录到单独的文件中。但是我看到,即使我开始第一个,它也会在文件名中没有实例属性值的情况下登录myfile-.log
。发生这种情况是因为EncryptablePropertyPlaceholderConfigurer
加载的属性未加载到系统属性。我该怎么改变它?我应该怎么做才能使占位符配置器加载属性到系统中。
谢谢
答案 0 :(得分:0)
<bean id="propertyLoader" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.System"/>
<property name="targetMethod" value="getProperties"/>
</bean>
</property>
<property name="targetMethod" value="putAll"/>
<property name="arguments">
<util:properties location="${myfile.properties}">
</util:properties>
</property>
</bean>