Spring的PropertyPlaceholderConfigurer应用与集成项目properties文件管理
来源:互联网 发布:mac移除应用程序 编辑:程序博客网 时间:2024/06/05 02:50
PropertyPlaceholderConfigurer类就是bean factory post-processor的一种,它的作用是一个资源属性的配置器,能够将BeanFactory的里定义的内容放在一个以.propertis后缀的文件中。因此我们可以继承该类,实现自己定制的properties文件管理。
1、数据库的配置文件jdbc.properties存放数据库账号,密码及地址信息。这些数据直接暴露在外。所以需要对这些数据进行加密,但是使用加密后的数据直接去链接jdbc驱动账号密码不一致。此时我们可以定制该方法在读取的时候将密码解密.
2、初始化的时候。可以指定多个properties文件加载,其中可以包含静态配置文件。例如:短信模板,提示模板等资源数据。都可以进行托管
spring中配置
<bean id="springPropertiesUtil" class="cn.unitedtech.util.SpringPropertiesUtil"><property name="locations"><list><value>classpath:mysql.properties</value><value>classpath:shiro.properties</value><value>classpath:config.properties</value></list></property><property name="fileEncoding" value="UTF-8" /></bean>
代码管理
private static Map<String, String> propertiesMap;private final Log log = LogFactory.getLog(getClass());private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK;private final String userNameKey = "jdbc.userName";private final String passWordKey = "jdbc.passWord"; @Overridepublic void setSystemPropertiesMode(int systemPropertiesMode) { super.setSystemPropertiesMode(systemPropertiesMode); springSystemPropertiesMode = systemPropertiesMode; } @Override protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException { String userName = props.getProperty(userNameKey);String password = props.getProperty(passWordKey);try {if (StringUtils.isNotEmpty(userName)) {props.setProperty(userNameKey, DESUtil.decrypt(userName));}if (StringUtils.isNotEmpty(password)) {props.setProperty(passWordKey, DESUtil.decrypt(password));}} catch (Exception e) {log.error("decrypt password exception", e);} propertiesMap = new HashMap<String, String>(); for (Object key : props.keySet()) { String keyStr = key.toString(); if( null != keyStr && -1 >= keyStr.indexOf("jdbc") ){ String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode); propertiesMap.put(keyStr, valueStr); } } super.processProperties(beanFactory, props); } public static String getProperty(String name) { return propertiesMap.get(name).toString(); }
其中 propertiesMap 存放了非jdbc文件的数据。通过getProperty方法进行读取
0 0
- Spring的PropertyPlaceholderConfigurer应用与集成项目properties文件管理
- 使用spring的PropertyPlaceholderConfigurer加密properties文件中的属性
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- Spring的PropertyPlaceholderConfigurer应用
- 如何搭建DNS服务器(Dnsmasq的安装与配置)
- OkHttp的基本使用——替代Apache HttpClient
- Tyvj P1864 守卫者的挑战
- 安装mxnet
- 未将对象引用设置到对象实例(转)
- Spring的PropertyPlaceholderConfigurer应用与集成项目properties文件管理
- 有100W个关键字,长度小于等于50字节。用高效的算法找出top10的热词,并对内存的占用不超过1MB。
- android动画的实现
- 安卓命令学习
- 安卓完美退出App以及跨界面关闭Activity
- 解释型语言 跟 编译型语言的区别
- es6之Arrow Function
- [解决办法]MPLAB IDE打开自动关闭
- Mac OS原来自带了apache,基本用法总结