Spring依赖注入:自动注入properties文件中的配置:很多情况下我们需要在配置文件中配置一些属性,然后注入到bean中,Spring提供了org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer类,可以方便我们使用注解直接注入properties文件中的配置。
下面我们看下具体如何操作:
首先要新建maven项目,并在pom文件中添加spring依赖,如下pom.xml文件:
<project xmlns=
"https://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"https://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation=
"https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
> <modelversion>
4.0
.
0
</modelversion>
<groupid>cn.outofmemory</groupid>
hellospring.properties.annotation</artifactid>
<version>
0.0
.
1
-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hellospring.properties.annotation</name>
<url>https:
//maven.apache.org</url>
<properties>
<project.build.sourceencoding>UTF-
8
</project.build.sourceencoding>
<org.springframework-version>
3.0
.
0
.RC2</org.springframework-version>
</properties>
<dependencies>
<dependency>
<groupid>junit</groupid>
junit</artifactid>
<version>
3.8
.
1
</version>
<scope>test</scope>
</dependency>
<!-- Spring -->
<dependency>
<groupid>org.springframework</groupid>
spring-context</artifactid>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
</project>
要自动注入properties文件中的配置,需要在spring配置文件中添加org.springframework.beans.factory.config.PropertiesFactoryBean和org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer的实例配置:
如下spring配置文件appContext.xml
<!--?xml version=
"1.0"
encoding=
"UTF-8"
?-->
<beans xmlns=
"https://www.springframework.org/schema/beans"
xmlns:context=
"https://www.springframework.org/schema/context"
xmlns:xsi=
"https://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="https://www.springframework.org/schema/beans
https:
//www.springframework.org/schema/beans/spring-beans-3.0.xsd
https:
//www.springframework.org/schema/context
https:
//www.springframework.org/schema/context/spring-context-3.0.xsd ">
<!-- bean annotation driven -->
<context:annotation-config>
<context:component-scan base-
package
=
"cn.outofmemory.hellospring.properties.annotation"
>
</context:component-scan>
<bean
class
=
"org.springframework.beans.factory.config.PropertiesFactoryBean"
id=
"configProperties"
>
<property name=
"locations"
>
<list>
<value>classpath*:application.properties</value>
</list>
</property>
</bean>
<bean
class
=
"org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"
id=
"propertyConfigurer"
>
<property name=
"properties"
ref=
"configProperties"
>
</property></bean>
</context:annotation-config></beans>
在这个配置文件中我们配置了注解扫描,和configProperties实例和propertyConfigurer实例。这样我们就可以在java类中自动注入配置了,我们看下java类中如何做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
自动注入需要使用@Value注解,这个注解的格式#{configProperties['mysql.url']}其中configProperties是我们在appContext.xml中配置的beanId,mysql.url是在properties文件中的配置项。
properties文件的内容如下:
1 2 3 |
|
最后我们需要测试一下以上写法是否有问题,如下App.java文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
在main方法中首先声明了appContext,然后获得了自动注入的MySQLConnectionInfo的实例,然后打印出来,运行程序会输出配置文件中配置的值。