本文首发于我的博客:https://blog.wellcoding.win
我们都知道Spring可以注入各种对象,而有些时候,我们需要注入一些配置项,而不是一个对象。
可以发现Spring提供了一个PreferencesPlaceholderConfigurer
类,可以方便的让我们使用注解将properties中的配置信息注入到对象中。
具体操作如下:
创建一个Maven项目,添加Spring Context依赖。
在Spring上下文的配置文件中声明org.springframework.beans.factory.config.PropertiesFactoryBean
和org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
的实例。
<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管理。
@Value("#{configProperties['mysql.url']}")
private String url;
注解中的value值#{configProperties['mysql.url']}
中的configProperties
就是Spring上下文中org.springframework.beans.factory.config.PropertiesFactoryBean
的实例ID,mysql.url
就是properties中配置的key。
https://blog.wellcoding.win/2017/05/10/2017-05-10-spring-inject-properties.html