网站搭建报价,wordpress 上传大图,视频线上推广,安卓编程软件Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性。 PlaceholderConfigurer支持的一些选项在文档中并不明显#xff0c;但是很有趣并且可能有用。 首先#xff0c;以Spring文档中的示例为例#xff0c;考虑一个属性文… Spring的PropertySourcesPlaceholderConfigurer用于从XML或Java Config中定义的Spring bean定义外部化属性。 PlaceholderConfigurer支持的一些选项在文档中并不明显但是很有趣并且可能有用。 首先以Spring文档中的示例为例考虑一个属性文件其中包含用于配置数据源的信息 jdbc.driverClassNameorg.hsqldb.jdbcDriver
jdbc.urljdbc:hsqldb:hsql://production:9002
jdbc.usernamesa
jdbc.passwordroot 使用自定义名称空间配置PropertySourcesPlaceholderConfigurer context:property-placeholder locationdatabase.properties/ 可以通过以下方式使用基于XML的bean定义来定义利用这些属性的数据源bean bean iddataSource destroy-methodcloseclassorg.apache.commons.dbcp.BasicDataSourceproperty namedriverClassName value${jdbc.driverClassName}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword 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”则使用这种方法使用$ {propertyNamedefault}语法 property nameusername value${jdbc.username:sa}/ 或使用Java Config ..
..
Value(${jdbc.username:sa}) private String dbUserName;Bean
public BasicDataSource dataSource() {
..
} 其次是对嵌套属性解析的支持例如考虑以下属性 phase.properties文件– phaseqa
jdbc.username.qaqasa
jdbc.username.devdevsa 并以这种嵌套方式将phase属性用作XML bean定义中另一个属性的一部分 property nameusername 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