Spring用代码来读取properties文件实例解析
时间:2019-04-12
本文章向大家介绍Spring用代码来读取properties文件实例解析,主要包括Spring用代码来读取properties文件实例解析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有些时候,我们需要以Spring代码直接读取properties配置文件,那么我们要如何操作呢?下面我们来看看具体内容。
我们都知道,Spring可以@Value的方式读取properties中的值,只需要在配置文件中配置
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:config.properties</value> </property> </bean>
那么在需要用到这些获取properties中值的时候,可以这样使用
@Value("${sql.name}") private String sqlName;
但是这有一个问题,我每用一次配置文件中的值,就要声明一个局部变量。有没有用代码的方式,直接读取配置文件中的值。
答案就是重写PropertyPlaceholderConfigurer
public class PropertyPlaceholder extends PropertyPlaceholderConfigurer { private static Map<String,String> propertyMap; @Override protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException { super.processProperties(beanFactoryToProcess, props); propertyMap = new HashMap<String, String>(); for (Object key : props.keySet()) { String keyStr = key.toString(); String value = props.getProperty(keyStr); propertyMap.put(keyStr, value); } } //static method for accessing context properties public static Object getProperty(String name) { return propertyMap.get(name); } }
在配置文件中,用上面的类,代替PropertyPlaceholderConfigurer
<bean id="propertyConfigurer" class="com.gyoung.mybatis.util.PropertyPlaceholder"> <property name="location"> <value>classpath:config.properties</value> </property> </bean>
这样在代码中就可以直接用编程方式获取
PropertyPlaceholder.getProperty("sql.name");
如果是多个配置文件,配置locations属性
<bean id="propertyConfigurer" class="com.gyoung.mybatis.util.PropertyPlaceholder"> <property name="ignoreResourceNotFound" value="true"/> <property name="locations"> <list> <value>file:./jdbc.properties</value> <value>file:./module.config.properties</value> <value>classpath:jdbc.properties</value> <value>classpath*:*.config.properties</value> </list> </property> </bean>
总结
以上就是本文关于Spring用代码来读取properties文件实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
- zookeeper 分布式锁服务
- QT Creator 快速入门教程 读书笔记(三)
- WordPress中添加自定义评论表情包的方法(附三套表情包下载)
- 使用新类型Nullable处理数据库表中null字段
- QT Creator 快速入门教程 读书笔记(二)
- 设计模式学习笔记-命令模式
- .com域名和.cn域名的介绍
- Windows安装和使用zookeeper
- 使用MagicAjax 实现无刷新Webparts
- Python 项目实践一(外星人入侵小游戏)第五篇
- Python 项目实践一(外星人入侵小游戏)第三篇
- WordPress自定义栏目运用实例 VI:设置外链缩略图/特色图像
- Python 项目实践一(外星人入侵小游戏)第二篇
- IBatisNet配置
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 一文学会使用 CSS 中的 min(), max(), clamp() 以及它们的使用场景用例
- 5 个 JS 数组技巧可提高你的开发技能
- 一个有意思的方案:不借助后台和 JS ,只用 CSS 让一个列表编号倒序,你会怎么做?
- 关于MySQL LOAD DATA特性的利用与思考
- NHibernate 缓存
- 渗透测试 | 突破前端JS加密限制
- 使用 Task 简化异步编程
- Task 编程中的异常处理
- AngularJS 中的 factory、 service 和 provider
- 设计模式之适配器模式
- 设计模式之组合模式
- MvvmCross 框架中的数据绑定语法
- Vivado IP核锁定的解除方法
- Flutter Dojo设计之道——骚气的闪屏动画是如何实现的
- 数据处理 | pandas入门专题——离散化与one-hot