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之占位符配置器相关推荐

  1. Spring属性占位符配置器–一些不太明显的选项

    Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性. PlaceholderConf ...

  2. spring 属性占位符_Spring属性占位符配置器–一些不太明显的选项

    spring 属性占位符 Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性. Pl ...

  3. 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#manifestPlaceholders 清单文件占位符配置 )

    文章目录 一.ProductFlavor#manifestPlaceholders 清单文件占位符配置 Android Plugin DSL Reference 参考文档 : 文档主页 : https ...

  4. Spring配置文件使用占位符配置

    Spring利用PropertyPlaceholderConfigurer占位符 1.Spring的框架中,org.springframework.beans.factory.config.Prope ...

  5. android 渠道包 占位符配置,Android打包

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 打包的事,之前很少做,也了解的比较少,今天好好看了看,总结一下,以后要是用到了,或许可以少走些弯路. 多渠道打包 友盟多 ...

  6. manifestPlaceholders占位符失效

    今天打包的时候,运营表示需要一个vivo渠道的包,桌面名称要和其他渠道不同,如果只有这一次需求的话,大可以修改了清单文件中的application的label就行,打完包后再改回原来的,但考虑到目前马 ...

  7. spring boot 2-文件配置、YAML语法、文件处理器、文件占位符、profile

    文件配置 按尚硅谷视频的笔记做的这个发不出原创,就只能发转载了(转载链接是自己的) 一.配置文件 1.SpringBoot使用一个全局的配置文件,配置文件名是固定的: • application.pr ...

  8. SPRING多个占位符配置文件解析源码研究--转

    原文地址:http://www.cnphp6.com/archives/85639 Spring配置文件: <context:property-placeholder location=&quo ...

  9. Spring import配置文件使用占位符

    转载自 Spring import配置文件使用占位符 import使用占位符 连接池切换导入配置的代码: <import resource="classpath:META-INF/sp ...

  10. java+解析占位符,如何告诉Spring使用Java映射来解析属性占位符?

    Spring提供了一个 MapPropertySource,您可以在ApplicationContext的环境中注册(您需要一个大多数ApplicationContext实现提供的Configurab ...

最新文章

  1. 农村程序员吐槽:虽然挣着2万高薪,但却舍不得吃舍不得穿
  2. 2020 最烂密码 TOP 200 大曝光,霸榜的竟然是它?
  3. 4项无线技术对比:谁更适合物联网领域?
  4. [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考
  5. MySQL 5.6.11 GA 发布
  6. Android Content Provider Security
  7. remoteing2
  8. springboot 整合druid
  9. Bootstrap3 按钮组插件
  10. TensorFlow 保存和加载模型
  11. java实现grpc
  12. NXP S32G2开发
  13. 3D 锥形图表echarts
  14. c语言字符动画源码下载,C语言程序实例大全(220个精彩源码下载)
  15. 架构师是否需要深入代码?
  16. 利用qq账号查询所绑定的手机号码_怎么不用手机号注册新微信账号 免手机号申请方法分享...
  17. 蓝牙耳机连接成功,但是每次关闭电脑后,重启电脑,连接耳机,没有声音——stereo模式没有声音
  18. SAS逻辑回归之多分类
  19. 活动预告|CoodeWisdom 软件智能化开发与运维学术报告系列 第4期(陈鹏飞 中山大学)...
  20. 叶成-人员管理-机构管理

热门文章

  1. 浅谈CDN技术的性能与优势
  2. 现代软件工程第五周作业
  3. Linux之重置密码的两种方法
  4. TCP/IP学习笔记12-- IP协议基础
  5. JavaScript (十九):DOM对象其它操作
  6. greenev —— Python 异步网络服务框架
  7. JVM-绘图展现字节码执行引擎执行过程
  8. homework week02
  9. php获得mp3文件总时间,php获得音频文件信息,php获得mp3文件信息
  10. 一种全新的VDI桌面虚拟化方案(X9BYOD)