8.1.4 属性占位符配置器
8.1.4 属性占位符配置器
Spring
提供了PropertyPlaceholderConfigurer
,它是一个容器后处理器,负责读取Properties
属性文件里的属性值,并将这些属性值设置成Spring
配置文件的数据。
通过使用PropertyPlaceholderConfigurer
后处理器,可以将Spring
配置文件中的部分数据放在属性文件中设置,这种配置方式当然有其优势:可以将部分相似的配置(比如数据库的URL
、用户名和密码)放在特定的属性文件中,如果只需要修改这部分配置,则无须修改Spring
配置文件,修改属性文件即可。
程序示例
1 | E:\workspace_QingLiangJiJavaEEQiYeYingYongShiZhang5\PropertyPlaceholderConfigurer |
beans.xml
下面的配置文件配置了PropertyPlaceholderConfigurer
后处理器,在配置数据源Bean
时,使用了属性文件中的属性值。
1 |
|
在上面的配置文件中,配置driverClass
、 jdbcUrl
等信息时,并未直接设置这些属性的属性值,而是设置了${jdbc.driverClassName}
和${jdbc.url}
属性值,这表明Spring
容器将从propertyConfigurer
指定的属性文件中搜索这些key
对应的value
,并为该Bean
的属性值设置这些value
值。
如前所述, ApplicationContext
会自动检测部署在容器中的容器后处理器,无须额外注册,容器会自动检测并注册Spring
中的容器后处理器。因此,只需提供如下Properties
文件:
dbconn.properties
1 | jdbc.driverClassName=com.mysql.jdbc.Driver |
通过这种方法,可从主XML
配置文件中分离出部分配置信息。如果仅需要修改数据库连接属性,则无须修改主XML
配置文件,只需要修改该属性文件即可。采用属性占位符的配置方式,可以支持使用多个属性文件,通过这种方式,可将配置文件分割成多个属性文件,从而降低修改配置文件产生错误的风险。
对于数据库连接等信息集中的配置,可以将其配置在Properties
属性文件中,但不要过多地将Spring
配置信息抽离到Properties
属性文件中,这样可能会降低Spring
配置文件的可读性。
使用context:property-placeholder元素简化配置
对于采用基于XML Schema
的配置文件而言,如果导入了context:
命名空间,则可采用如下方式来配置该属性占位符。
1 | <context:property-placeholder |
也就是说,<context:property-placeholder>
元素是PropertyPlaceholderConfigurer
的简化配置。