在项目研发中,通常将一些可配置的定制信息放到属性文件中,如数据库的配置信息,缓存的配置信息以及一些属性常量等,便于统一管理。启动spring容器的时候,如何将配置文件的信息读取到容器中呢?
1、通过配置org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:main.properties</value>
<value>classpath*:redis.properties</value>
</list>
</property>
</bean>
这种方式是将多个配置文件读取到容器中,交给spring来管理。xml文件中取值可以通过${propertyName}获取;在Java代码中可以通过@Value获取对应的属性值。
当然,上述表示也可以通过 <context:property-placeholder location=""/>标签来代替,但是不推荐使用,因为这样表述不是很明确。
2、Bean中直接注入properties配置文件的值
<util:properties id="main" location="classpath:main.properties"></util:properties>
这种方式可以在代码中通过@Value注解进行注入。<util:properties />标签只能加载一个配置文件,如果要加载多个配置文件,可以用多个<util:properties />标签。
3、利用PropertiesFactoryBean进行配置
<bean id="remoteConfigs" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath*:demo-remote.properties</value>
</list>
</property>
</bean>
这种方式声明Properties类型的FactoryBean来加载配置文件,但是只能当做属性来注入,而不能准确获取到properties中的具体值。
public class Test() {
@Autowired
private Properties remoteConfigs;
}