Spring之占位符配置器
1. 属性占位符配置器
Spring提供了PropertyPlaceholderConfigurer后处理器,可以将Spring配置文件中部分数据放在属性文件中设置,这种配置方式当然有其优势:可以将部分相似的配置(比如数据库的URL、用户名和密码)放在特定文件中,如果只需要修改这部分配置,则无须修改Spring配置文件,修改属性文件即可。
下面的配置文件配置了PropertyPlaceholderConfigurer后处理器,在配置数据源Bean时,使用属性文件中的属性值。
<?xml version="1.0" encoding="GBK"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><!-- PropertyPlaceholderConfigurer是一个容器后处理器,它会读取属性文件信息,并将这些信息设置成Spring配置文件的数据。 --><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>dbconn.properties</value><!-- 如果有多个属性文件,依次在下面列出来 --><!--value>wawa.properties</value--></list></property></bean><!-- 定义数据源Bean,使用C3P0数据源实现 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"p:driverClass="${jdbc.driverClassName}"p:jdbcUrl="${jdbc.url}"p:user="${jdbc.username}"p:password="${jdbc.password}"/>
</beans>
Application会自动检测部署在容器中的容器后处理器,无须额外注册,容器会自动检测并注册Spring中的容器后处理。如下的dbconn.properties.
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=32147
对于采用基于XML Schema的配置文件而言,如果导入了context:命名空间,则可采用如下的方式来配置该属性占位符。
<!—location指定properties文件的位置-->
<context:property-placeholder location=”classpath:dbconn.properties”/>
2. 重写占位符配置器
PropertyOverridConfigurer是Spring提供的另外一个容器后处理,这个后处理的作用比上面那个容器后处理的功能更加强大——PropertyOverrideConfigurer的属性文件指定的信息可以直接覆盖Spring配置文件中的元素信息。使用PropertyOverrideConfigurer的属性文件,每条属性应保持的格式:beanId.property=value.
beanId是属性占位符试图覆盖的Bean的id,property是试图覆盖的属性名(对应于调用setter方法)。看如下的配置文件。
<?xml version="1.0" encoding="GBK"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><!-- PropertyOverrideConfigurer是一个容器后处理器,它会读取属性文件信息,并用这些信息设置覆盖Spring配置文件的数据 --><bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"><property name="locations"><list><value>dbconn.properties</value><!-- 如果有多个属性文件,依次在下面列出来 --></list></property></bean><!-- 定义数据源Bean,使用C3P0数据源实现,配置该Bean时没有指定任何信息,但Properties文件里的信息将会直接覆盖该Bean的属性值 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"/>
</beans>
PropertyOverrideConfigurer后处理器读取dbconn.properties文件中的属性,用于覆盖目标Bean的属性,因此,如果覆盖文件中有dataSource Bean属性的设置,则可在配置文件为该Bean指定属性值,这些属性值将会覆盖dataSource Bean的各属性值。下面是dbconn.properties.
dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/spring
dataSource.user=root
dataSource.password=32147
对于采用基于XML Schema的配置文件而言,如果导入了contextSchema,则可采用如下方式:
<!—location指定Properties文件配置-->
<context:property-override location=”classpath:dbconn.properties”/>
3. 总结
使用占位符有两种:属性占位符配置器和重写占位符配置器。对于选择哪一种,那就看个人的需要。了解占位符的应用有助于自己在项目中,更加灵活配置那些可变动的文件。
Spring之占位符配置器相关推荐
- Spring属性占位符配置器–一些不太明显的选项
Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性. PlaceholderConf ...
- spring 属性占位符_Spring属性占位符配置器–一些不太明显的选项
spring 属性占位符 Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性. Pl ...
- 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#manifestPlaceholders 清单文件占位符配置 )
文章目录 一.ProductFlavor#manifestPlaceholders 清单文件占位符配置 Android Plugin DSL Reference 参考文档 : 文档主页 : https ...
- Spring配置文件使用占位符配置
Spring利用PropertyPlaceholderConfigurer占位符 1.Spring的框架中,org.springframework.beans.factory.config.Prope ...
- android 渠道包 占位符配置,Android打包
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 打包的事,之前很少做,也了解的比较少,今天好好看了看,总结一下,以后要是用到了,或许可以少走些弯路. 多渠道打包 友盟多 ...
- manifestPlaceholders占位符失效
今天打包的时候,运营表示需要一个vivo渠道的包,桌面名称要和其他渠道不同,如果只有这一次需求的话,大可以修改了清单文件中的application的label就行,打完包后再改回原来的,但考虑到目前马 ...
- spring boot 2-文件配置、YAML语法、文件处理器、文件占位符、profile
文件配置 按尚硅谷视频的笔记做的这个发不出原创,就只能发转载了(转载链接是自己的) 一.配置文件 1.SpringBoot使用一个全局的配置文件,配置文件名是固定的: • application.pr ...
- SPRING多个占位符配置文件解析源码研究--转
原文地址:http://www.cnphp6.com/archives/85639 Spring配置文件: <context:property-placeholder location=&quo ...
- Spring import配置文件使用占位符
转载自 Spring import配置文件使用占位符 import使用占位符 连接池切换导入配置的代码: <import resource="classpath:META-INF/sp ...
- java+解析占位符,如何告诉Spring使用Java映射来解析属性占位符?
Spring提供了一个 MapPropertySource,您可以在ApplicationContext的环境中注册(您需要一个大多数ApplicationContext实现提供的Configurab ...
最新文章
- 农村程序员吐槽:虽然挣着2万高薪,但却舍不得吃舍不得穿
- 2020 最烂密码 TOP 200 大曝光,霸榜的竟然是它?
- 4项无线技术对比:谁更适合物联网领域?
- [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考
- MySQL 5.6.11 GA 发布
- Android Content Provider Security
- remoteing2
- springboot 整合druid
- Bootstrap3 按钮组插件
- TensorFlow 保存和加载模型
- java实现grpc
- NXP S32G2开发
- 3D 锥形图表echarts
- c语言字符动画源码下载,C语言程序实例大全(220个精彩源码下载)
- 架构师是否需要深入代码?
- 利用qq账号查询所绑定的手机号码_怎么不用手机号注册新微信账号 免手机号申请方法分享...
- 蓝牙耳机连接成功,但是每次关闭电脑后,重启电脑,连接耳机,没有声音——stereo模式没有声音
- SAS逻辑回归之多分类
- 活动预告|CoodeWisdom 软件智能化开发与运维学术报告系列 第4期(陈鹏飞 中山大学)...
- 叶成-人员管理-机构管理