配置和读取多个Properties文件
1. 使用PropertyPlaceholderConfigurer类
加载一个文件时:
加载多个文件时:
整合多工程下的多个分散的Properties文件时:
其中order属性代表其加载的顺序,如果没有设置就按照加载xml文件时的顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的Placeholder,如果配置了多个PropertyPlaceholderConfigurer,则该属性必须设置且为true,否则propertyConfigurerForProject2的properties文件不会被加载.
注意事项:
(1)、如果上面的dbQuery.properties与jdbc-parms.properties文件中有相同的参数配置名称,dbQuery.properties中配置的参数值不会被后面的覆盖。
(2)、如果jdbc-parms.properties,base-config.properties彼此有相同参数名配置,jdbc-parms.properties中的配置的值会被覆盖。
2. 使用PropertiesFactoryBean
使用PropertiesFactoryBean,可在Bean中直接注入Properties配置文件中的值,配置如下:
这种加载方式可以在代码中通过@Value注解进行注入, 可以将配置整体赋给Properties类型的类变量,也可以取出其中的一项赋值给String类型的类变量。也可以使用<util:properties/>标签,如:
<util:properties/> 标签只能加载一个文件,当多个属性文件需要被加载的时候,可以使用多个该标签,<util:properties/> 标签的实现类是PropertiesFactoryBean, 直接使用该类的bean配置,设置其locations属性可以达到一个和上面一样加载多个配置文件的目的。
在代码中引用Properties中的值如下:
将配置整体赋给Properties类型的类变量:
3. PropertyOverrideConfigurer
与PropertyPlaceholderConfigurer 不同的是: PropertyOverrideConfigurer 利用属性文件的相关信息,覆盖XML 配置文件中定义。即PropertyOverrideConfigurer 允许XML 配置文件中有默认的配置信息。
如果PropertyOverrideConfigurer 的属性文件有对应配置信息,则XML 文件中的配 置信息被覆盖,否则,直接使用XML 文件中的配置信息。使用PropertyOverrideConfigurer 属性文件的格式如下:
beanName.property=value
beanName 是属性占位符企图覆盖的bean 名, property 是企图覆盖的属性名。例如 :
容器自动注册propertyOverriderbean,读取dbconn.properties 文件中的属性,并用于覆盖目标bean 的属性。其配置文件中dataSourcebean 的属性完全是随意输入的,最终被属性文件的配置覆盖,其属性文件如下:
注意属性文件的格式必须是:beanName.property=value 。