Spring如何加载Properties文件
程序员文章站
2022-05-02 08:17:04
...
Spring的框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将.properties(key/value形式)文件中
一些动态设定的值(value),在XML中替换为占位该键()的值,
.properties文件可以根据客户需求,自定义一些相关的参数,这样的设计可提供程序的灵活性。
xml中的配置文件
<!-- 开发环境配置文件 -->
<bean id="developCustomProperties"
class="cn.lision.iems.admin.support.properties.ApplicationConfigurer">
<property name="fileEncoding" value="utf-8" />
<property name="locations">
<list>
<value>classpath:/conf/dev/application.required.properties</value>
<value>classpath:/conf/dev/application.custom.properties</value>
</list>
</property>
</bean>
public class ApplicationConfigurer extends PropertyPlaceholderConfigurer {
private static Map<String, Object> ctxPropertiesMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
super.processProperties(beanFactory, props);
ctxPropertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
}
}
public static Object getProperty(String name) {
return ctxPropertiesMap.get(name);
}
public static Map<String, Object> getProperties() {
return ctxPropertiesMap;
}
public static void setProperty(Map<String, Object> map){
ctxPropertiesMap.putAll(map);
}
public static String getStringProperty(String name, String replaceValue) {
Map<String, Object> variableMap = Cache.get(Constant.VARIABLE_CACHE_KEY);
if(variableMap==null){
return replaceValue;
}
Object object = variableMap.get(name);
if (object == null) {
return replaceValue;
}
return String.valueOf(object);
}
}
以上是例一,以下是例二
<bean id="propertyConfigurer"
class="com.datasure.util.filter.EncryptablePropertyPlaceholderConfigurer">
<property name="locations">
<list><value>classpath:jdbc.properties</value></list>
</property>
</bean>
public class EncryptablePropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
private static final String key = "helloworld";
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
try {
Des des = new Des();
String username = props.getProperty("jdbc.username");
if (username != null) {
props.setProperty("jdbc.username", des.Decrypt(username, des.hex2byte(key)));
}
String password = props.getProperty("jdbc.password");
if (password != null) {
props.setProperty("jdbc.password", des.Decrypt(password, des.hex2byte(key)));
}
String url = props.getProperty("jdbc.url");
if (url != null) {
props.setProperty("jdbc.url", des.Decrypt(url, des.hex2byte(key)));
}
String driverClassName = props.getProperty("jdbc.driverClassName");
if(driverClassName != null){
props.setProperty("jdbc.driverClassName", des.Decrypt(driverClassName, des.hex2byte(key)));
}
super.processProperties(beanFactory, props);
} catch (Exception e) {
e.printStackTrace();
throw new BeanInitializationException(e.getMessage());
}
}
}
//通过如上配置就可以对配置文件进行解密操作
上一篇: Hibernate 级联操作
下一篇: 判断用户输入的是 Yes 或 NO
推荐阅读
-
WP8.1程序开发中,如何加载本地文件资源或安装在程序包中的资源。
-
如何调试异步加载页面里包含的js文件_javascript技巧
-
Spring Boot的properties配置文件读取
-
Spring加载配置和读取多个Properties文件的讲解
-
利用Jasypt如何对Spring Boot配置文件加密
-
Spring Boot的properties配置文件读取
-
说说在Spring中如何引用外部属性文件的方法
-
Spring用代码来读取properties文件实例解析
-
Spring Boot中配置文件application.properties使用
-
详解Spring加载Properties配置文件的四种方式