web开发,经常使用资源属性(*.properties)存储系统变量,例如db.properties存放jdbc连接属性,redis.properties存放redis连接属性。而程序往往多个场景使用这些系统变量,下面根据使用场景对获取资源属性文件进行详细描述。
一、xml文件获取资源属性文件
spring mvc + mybatis项目,需要指定工程数据源和mybatis配置属性,一般是以spring-mybatis.xml作为mybatis在spring中的集成配置。spring-mybatis.xml可以直接使用el表达式获取db.proprities文件中变量,eg:${jdbc.username}、${jdbc.password}
二:JAVA程序获取资源属性文件
java程序有两种方法可获取配置文件中变量;
2.1使用ResourceBundle获取
java.util.ResourceBundle提供国际化捷径。通过此类,可以读取资源属性文件(*.properties),然后依据*.properties文件的名称信息,匹配当前系统的国别语言信息,然后获取相应的*.properties文件的内容。
首先根据文件路径和语言环境获取国际化文件;
再根据资源属性文件中key值,获取value;
2.2使用spring @Value注解方式直接获取资源属性文件中变量值
此种方法,直接可以作用在类的变量上,变量量加上@Value("xxx")注解,即可从资源属性文件查找变量xxx=yyy,并把yyy set给类的变量;eg:
从资源属性文件中查找imghost.url的值,并将值set给imghost变量;
三、页面获取资源属性文件
有些业务场景,页面需要获取资源属性文件中的变量,并展示出。下面针对freemarker渲染模板引擎,讲讲在.ftl如何获取资源文件。
1、配置freemarker视图解析器;用于视图解析,后台将需要渲染在页面上的对象放入ModelMap中,通过视图解析器,解析并渲染至页面中;
2、配置spring资源文件;“messages”是资源配置文件名称,messages.properties
3、自定义spring.ftl文件;spring.ftl文本内容链接;
4、页面引用spring.ftl
<#import"/common/spring.ftl" as spring/>
5、使用<@spring/>实现读取资源文件;eg:<@spring.message“jdbc.username”/>,从第二步配置资源文件message.properties读取jdbc.username的值。
ps:对spring整合freemarker国际化的朋友,可以跟踪spring.ftl、AbastractTemplateView.java、RequestContext.java源码,里面有答案。