配置和读取多个Properties文件

1. 使用PropertyPlaceholderConfigurer

加载一个文件时:

配置和读取多个Properties文件

加载多个文件时:

配置和读取多个Properties文件

整合多工程下的多个分散的Properties文件时:

配置和读取多个Properties文件


其中order属性代表其加载的顺序,如果没有设置就按照加载xml文件时的顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的Placeholder,如果配置了多个PropertyPlaceholderConfigurer,则该属性必须设置且为true,否则propertyConfigurerForProject2properties文件不会被加载.

注意事项:
(1)如果上面的dbQuery.propertiesjdbc-parms.properties文件中有相同的参数配置名称dbQuery.properties中配置的参数值不会被后面的覆盖

(2)如果jdbc-parms.properties,base-config.properties彼此有相同参数名配置jdbc-parms.properties中的配置的值会被覆盖


2. 使用PropertiesFactoryBean

使用PropertiesFactoryBean,可在Bean中直接注入Properties配置文件中的值,配置如下:

配置和读取多个Properties文件


这种加载方式可以在代码中通过@Value注解进行注入,   可以将配置整体赋给Properties类型的类变量,也可以取出其中的一项赋值给String类型的类变量。也可以使用<util:properties/>标签,如:

配置和读取多个Properties文件

<util:properties/> 标签只能加载一个文件,当多个属性文件需要被加载的时候,可以使用多个该标签<util:properties/> 标签的实现类是PropertiesFactoryBean  直接使用该类的bean配置,设置其locations属性可以达到一个和上面一样加载多个配置文件的目的

在代码中引用Properties中的值如下:

配置和读取多个Properties文件

将配置整体赋给Properties类型的类变量

配置和读取多个Properties文件


3. PropertyOverrideConfigurer 

PropertyPlaceholderConfigurer 不同的是: PropertyOverrideConfigurer 利用属性文件的相关信息,覆盖XML 配置文件中定义。即PropertyOverrideConfigurer 允许XML 配置文件中有默认的配置信息。 
如果PropertyOverrideConfigurer 的属性文件有对应配置信息,则XML 文件中的配 置信息被覆盖否则,直接使用XML 文件中的配置信息。使用PropertyOverrideConfigurer 属性文件的格式如下
beanName.property=value 
beanName 是属性占位符企图覆盖的bean 名, property 是企图覆盖的属性名。例如 

配置和读取多个Properties文件

容器自动注册propertyOverriderbean,读取dbconn.properties 文件中的属性,并用于覆盖目标bean 的属性。其配置文件中dataSourcebean 的属性完全是随意输入的,最终被属性文件的配置覆盖,其属性文件如下:

配置和读取多个Properties文件

注意属性文件的格式必须是beanName.property=value