Spring注入Properties文件中的配置

我们都知道Spring可以注入各种对象,而有些时候,我们需要注入一些配置项,而不是一个对象。

可以发现Spring提供了一个PreferencesPlaceholderConfigurer类,可以方便的让我们使用注解将properties中的配置信息注入到对象中。

具体操作如下:

创建一个Maven项目,添加Spring Context依赖。

在Spring上下文的配置文件中声明org.springframework.beans.factory.config.PropertiesFactoryBeanorg.springframework.beans.factory.config.PreferencesPlaceholderConfigurer的实例。

1
2
3
4
5
6
7
8
9
10
11
12
<bean id="configProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath*:*.properties</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="properties" ref="configProperties"/>
</bean>

然后在Java代码中使用@Value注解来取值。注意:相应的Java类也需要使用@Service@Component等声明由Spring管理。

1
2
@Value("#{configProperties['mysql.url']}")
private String url;

注解中的value值#{configProperties['mysql.url']}中的configProperties就是Spring上下文中org.springframework.beans.factory.config.PropertiesFactoryBean的实例ID,mysql.url就是properties中配置的key。