? ? ? ? web開發(fā),經(jīng)常使用資源屬性(*.properties)存儲系統(tǒng)變量,例如db.properties存放jdbc連接屬性,redis.properties存放redis連接屬性。而程序往往多個場景使用這些系統(tǒng)變量,下面根據(jù)使用場景對獲取資源屬性文件進行詳細描述。
一、xml文件獲取資源屬性文件
? ? ? ? spring mvc + mybatis項目,需要指定工程數(shù)據(jù)源和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),然后依據(jù)*.properties文件的名稱信息,匹配當前系統(tǒng)的國別語言信息,然后獲取相應的*.properties文件的內(nèi)容。
? ? ? 首先根據(jù)文件路徑和語言環(huán)境獲取國際化文件;

? ? ? ?再根據(jù)資源屬性文件中key值,獲取value;

2.2使用spring @Value注解方式直接獲取資源屬性文件中變量值
? ? ? ?此種方法,直接可以作用在類的變量上,變量量加上@Value("xxx")注解,即可從資源屬性文件查找變量xxx=yyy,并把yyy set給類的變量;eg:

? ? ? ? 從資源屬性文件中查找imghost.url的值,并將值set給imghost變量;
三、頁面獲取資源屬性文件
? ? ? ?有些業(yè)務場景,頁面需要獲取資源屬性文件中的變量,并展示出。下面針對freemarker渲染模板引擎,講講在.ftl如何獲取資源文件。
1、配置freemarker視圖解析器;用于視圖解析,后臺將需要渲染在頁面上的對象放入ModelMap中,通過視圖解析器,解析并渲染至頁面中;

2、配置spring資源文件;“messages”是資源配置文件名稱,messages.properties

3、自定義spring.ftl文件;spring.ftl文本內(nèi)容鏈接;
4、頁面引用spring.ftl
<#import"/common/spring.ftl" as spring/>
5、使用<@spring/>實現(xiàn)讀取資源文件;eg:<@spring.message“jdbc.username”/>,從第二步配置資源文件message.properties讀取jdbc.username的值。
ps:對spring整合freemarker國際化的朋友,可以跟蹤spring.ftl、AbastractTemplateView.java、RequestContext.java源碼,里面有答案。