spring 属性占位符

Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性。 PlaceholderConfigurer支持的一些选项在文档中并不明显,但很有趣,并且可能有用。

首先,以Spring文档中的示例为例,考虑一个属性文件,其中包含用于配置数据源的信息:

jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root

使用自定义名称空间配置PropertySourcesPlaceholderConfigurer:

<context:property-placeholder location='database.properties'/>

可以通过以下方式使用基于XML的bean定义来定义利用这些属性的数据源bean:

<bean id='dataSource' destroy-method='close'class='org.apache.commons.dbcp.BasicDataSource'><property name='driverClassName' value='${jdbc.driverClassName}'/><property name='url' value='${jdbc.url}'/><property name='username' value='${jdbc.username}'/><property name='password' value='${jdbc.password}'/>
</bean>

并以这种方式使用基于Java的配置:

@Value('${jdbc.driverClassName}') private String driverClassName;
@Value('${jdbc.url}')             private String dbUrl;
@Value('${jdbc.username}')        private String dbUserName;
@Value('${jdbc.password}')        private String dbPassword;@Bean
public BasicDataSource dataSource() {BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName(driverClassName);dataSource.setUrl(dbUrl);dataSource.setUsername(dbUserName);dataSource.setPassword(dbPassword);return dataSource;
}

不太明显的选项是:

首先是对默认值的支持。 例如,如果要为jdbc用户名默认提供“ sa”,则使用这种方式(使用$ {propertyName:default}语法):

<property name='username' value='${jdbc.username:sa}'/>

或使用Java Config:

..
..
@Value('${jdbc.username:sa}') private String dbUserName;@Bean
public BasicDataSource dataSource() {
..
}

其次是对嵌套属性解析的支持,例如考虑以下属性:

phase.properties文件–

phase=qa
jdbc.username.qa=qasa
jdbc.username.dev=devsa

并以这种嵌套方式将'phase'属性用作XML bean定义中另一个属性的一部分:

<property name='username' value='${jdbc.username.${phase}}'/>

这些选项对于基于占位符的配置可能非常有用。

参考: Spring Property占位符配置器– all和杂物博客中,我们的JCG合作伙伴 Biju Kunjummen提供了一些不太明显的选择 。

翻译自: https://www.javacodegeeks.com/2013/01/spring-property-placeholder-configurer-a-few-not-so-obvious-options.html

spring 属性占位符

spring 属性占位符_Spring属性占位符配置器–一些不太明显的选项相关推荐

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

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

  2. spring cloud config动态刷新_Spring Cloud学习笔记--配置中心(Config)

    Spring Cloud Config provides server-side and client-side support for externalized configuration in a ...

  3. 第二章 选择符和属性

    1.类别选择符(Class selectors):你要给网页施加规则,首先你要选择给什么施加规则 类别选择符 让你对一个给定的类别 应用CSS,如果我们有下面这条CSS规则: p.bold{ font ...

  4. python 属性描述符_Python属性描述符(二)

    Python存取属性的方式特别不对等,通过实例读取属性时,通常返回的是实例中定义的属性,但如果实例未曾定义过该属性,就会获取类属性,而为实例的属性赋值时,通常会在实例中创建属性,而不会影响到类本身.这 ...

  5. Python利用描述符进行属性访问控制,完成属性数据类型强制定义(如C语言)、属性读写及删除操作

    # coding=utf-8 #用描述符对属性进行访问控制class TypedProperty(object):def __init__(self,name,type_,default=None): ...

  6. python描述符与实例属性_Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  7. java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数

    在Spring MVC中,很容易将请求参数绑定到处理请求的方法参数. 我只是使用@RequestParameter("name"). 但是我可以对request属性做同样的事情吗? ...

  8. Spring中bean标签的属性和值:

    Spring中bean标签的属性和值: <bean name="user" class="com.pojo.User" init-method=" ...

  9. spring MVC请求处理类注解属性详解

    spring MVC请求处理类注解属性详解

最新文章

  1. linux进程间通信:POSIX 共享内存
  2. Leetcode 刷题笔记
  3. qt显示rgba8888 如何改 frame_Qt音视频开发2-vlc回调处理
  4. 7-n!末尾有几个0
  5. nginx源码阅读(二).初始化:main函数及ngx_init_cycle函数
  6. java tar 安装程序_linux下jdk的安装(tar包)
  7. Mybatis的入门到精通这一篇文章就够了
  8. python安装过程中出现文件或目录损坏且无法读取_解决安装python库时windows error5 报错的问题...
  9. 由项目中的一个小问题所联想到的。
  10. 客户端存储——Storage
  11. python创造订单失败_使用Python API创建新订单,get AttributeError:“str”对象没有属性“iteritems”...
  12. 清华大学发布OpenNE:用于网络嵌入的开源工具包
  13. 运输层_TCP可靠传输的实现
  14. 日历小程序C语言,微信小程序实现日历功能
  15. Three.js中的矩阵
  16. 打开catia界面全是白色怎么办_别输在细节上!CATIA零件表面写字技巧
  17. WARNING: Too many active WebGL contexts. Oldest context will be lost.
  18. Linux为sh脚本文件添加执行权限
  19. php 图片上加文字,PHP实现在图片中添加中文文字
  20. 不想做成年人?看到第一张就哭了,满满的回忆

热门文章

  1. 来之不易的美团面试,结果居然挂了...(附面试答案)
  2. MySQL Replace()函数
  3. 漫画:什么是MD5算法
  4. 优秀学生专栏——董超
  5. 纯js实现人脸识别眨眨眼张张嘴案例——alive_face.js
  6. python一图带你精通time类型转换
  7. 2020蓝桥杯省赛---java---B---5(排序)
  8. springboot创建项目
  9. android studio 配置国内镜像
  10. 阿卡姆疯人院需要java吗_蝙蝠侠阿甘疯人院 这个报错 怎么解决 哪位大神知道...