在编写spring XML 配置文件的时候,有一些参数我们需要可以在类似 "xxx.properties" 的文件中可配置。那我们怎么才能在Spring XML文件中使用properties文件中配置的参数呢?在spring中有现成的方法可以实现,实现类是 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
这里举一个<<Spring in action >>中的例子。属性文件account-service.properties中的内容:
email.protocol=smtp
email.host=localhost
email.port=25
email.username=test@juvenxu.com
email.password=123456
email.auth=true
email.systemEmail=admin@juvenxu.com
要加载到Spring XML文件中的写法如下
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:account-service.properties" />
</bean>
如果有多个配置文件可以选着如下加载方法如下:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:account-service.properties</value>
<value>.....</value>
</list>
</property>
</bean>
在spring xml文件中使用这些参数的方法如下:
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="protocol" value="${email.protocol}" />
<property name="host" value="${email.host}" />
<property name="port" value="${email.port}" />
<property name="username" value="${email.username}" />
<property name="password" value="${email.password}" />
<property name="javaMailProperties">
<props>
<prop key="mail.${email.protocol}.auth">${email.auth}</prop>
</props>
</property>
</bean>
值得注意的是在加载多个文件的时候property的name值是locations。
我们也可以继承org.springframework.beans.factory.config.PropertyPlaceholderConfigurer这个类来编写自己的加载属性文件的类实现我们自己想要的功能。