一、背景
最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题。就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,现和大家共享.
二、项目环境介绍
Spring 4.2.6.RELEASE
SpringMvc 4.2.6.RELEASE
Mybatis 3.2.8
Maven 3.3.9
JDK 1.7
IDEA 15.04
三、实现的五种方式
1.通过context:property-placeholder加载配置文件jdbc.properties中的内容
2.使用注解的方式注入,主要用在java代码中使用注解注入properties文件中相应的value值
3.使用util:properties标签进行暴露properties文件中的内容
4.通过PropertyPlaceholderConfigurer在加载上下文的时候暴露properties到自定义子类的属性中以供程序中使用
5.自定义工具类PropertyUtil,并在该类的static静态代码块中读取properties文件内容保存在static属性中以供别的程序使用
四、注意事项及建议
以上五种方式,前三种方式比较死板,而且如果你想在带有@Controller注解的Bean中使用,你需要在SpringMVC的配置文件spring-mvc.xml中进行声明,如果你想在带有@Service、@Respository等非@Controller注解的Bean中进行使用,你需要在Spring的配置文件中spring.xml中进行声明。原因请参见另一篇博客:http://www.cnblogs.com/hafiz/p/5875740.html
我个人比较建议第四种和第五种配置方式,第五种为最好,它连工具类对象都不需要注入,直接调用静态方法进行获取,而且只一次加载,效率也高。而且前三种方式都不是很灵活,需要修改@Value的键值。
项目GitHub地址:https://github.com/hafizzhang/SSM/branches页面下的propertiesConfigurer分支。
联系客服