亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

spring中MessageSource的配置使用方法1

系統 2908 0
Spring定義了訪問國際化信息的MessageSource接口, 并提供了幾個易用的實現類。首先來了解一下該接口的幾個重要方法:
? String getMessage(String code, Object[] args, String defaultMessage, Locale locale)

code表示國際化資源中的屬性名;

args用于傳遞格式化串占位符所用的運行期參數;當在資源找不到對應屬性名時,返回defaultMessage參數所指定的默認信息;

locale表示本地化對象;

? String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException
與上面的方法類似,只不過在找不到資源中對應的屬性名時,直接拋出NoSuchMessageException異常;
? String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException

MessageSourceResolvable 將屬性名、參數數組以及默認信息封裝起來,它的功能和第一個接口方法相同。

MessageSource的類結構
MessageSource分別被HierarchicalMessageSource和ApplicationContext接口擴展,這里我們主要看一下HierarchicalMessageSource接口的幾個實現類,如圖5-7所示。

spring中MessageSource的配置使用方法1
圖5-7 MessageSource類圖結構
HierarchicalMessageSource接口添加了兩個方法,建立父子層級的MessageSource結構,類似于前面我們所介紹的HierarchicalBeanFactory。

該接口的setParentMessageSource (MessageSource parent)方法用于設置父MessageSource,而getParentMessageSource()方法用于返回父MessageSource。
HierarchicalMessageSource接口最重要的兩個實現類是 ResourceBundleMessageSource ReloadableResourceBundleMessageSource 。它們基于Java的ResourceBundle基礎類實現,允許僅通過資源名加載國際化資源。

ReloadableResourceBundleMessageSource 提供了定時刷新功能,允許在不重啟系統的情況下,更新資源的信息。

StaticMessageSource 主要用于程序測試,它允許通過編程的方式提供國際化信息。

DelegatingMessageSource 是為方便操作父MessageSource而提供的代理類。
ResourceBundleMessageSource 該實現類允許用戶通過beanName指定一個資源名(包括類路徑的全限定資源名),或通過beanNames指定一組資源名。

在代碼清單5-15中,我們通過JDK的基礎類完成了本地化的操作,下面我們使用ResourceBundleMessageSource來完成相同的任務。讀者可以比較兩者的使用差別,并體會Spring所提供的國際化處理功能所帶給我們的好處:

spring中MessageSource的配置使用方法1
啟動Spring容器,并通過MessageSource訪問配置的國際化資源,如代碼清單 5 17所示:
spring中MessageSource的配置使用方法1

比較代碼清單5-15中的代碼,我們發現最主要的區別在于我們無須再分別加載不同語言、不同國家/地區的本地化資源文件,僅僅通過資源名就可以加載整套的國際化資源文件。此外,我們無須顯式使用MessageFormat操作國際化信息,僅通過MessageSource# getMessage()方法就可以完成操作了。這段代碼的運行結果與代碼清單5 15的運行結果完全一樣。
ReloadableResourceBundleMessageSource
前面,我們提到該實現類比之于ResourceBundleMessageSource的唯一區別在于它可以 定時刷新資源文件 ,以便在應用程序不重啟的情況下感知資源文件的變化。很多生產系統都需要長時間持續運行,系統重啟會給運行帶來很大的負面影響。這時,通過該實現類就可以解決國際化信息更新的問題。請看下面的配置:

spring中MessageSource的配置使用方法1
在上面的配置中,我們通過 cacheSeconds屬性讓ReloadableResourceBundleMessageSource每5秒鐘刷新一次資源文件 (在真實的應用中,刷新周期不能太短,否則頻繁的刷新將帶來性能上的負面影響,一般不建議小于30分鐘)。cacheSeconds默認值為-1表示永不刷新,此時,該實現類的功能就蛻化為ResourceBundleMessageSource的功能。
我們編寫一個測試類對上面配置的ReloadableResourceBundleMessageSource進行測試:
spring中MessageSource的配置使用方法1
在①處,我們讓程序睡眠20秒鐘,在這期間,我們將fmt_resource_zh_CN.properties資源文件的greeting.common鍵值調整為:
---How are you!{0},today is {1}---
我們將看到兩次輸出的格式化信息分別對應更改前后的內容,也即本地化資源文件的調整被自動生效了:
How are you!John,today is 1/9/07 4:55 PM
---How are you!John,today is 1/9/07 4:55 PM---

spring中MessageSource的配置使用方法1


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品视频在线免费 | 四虎精品免费国产成人 | 日夜夜操 | 在线免费观看一级毛片 | 国产精品美女一区二区 | 中文字幕日韩哦哦哦 | 免费在线一级毛片 | 免费看搡女人的视频 | 国产精品香蕉成人网在线观看 | 国产精品成人不卡在线观看 | 免费国产免费福利视频 | 亚洲精品美女久久久久网站 | 五月婷婷伊人网 | 色偷偷亚洲女人天堂观看欧 | 亚洲视频第二页 | 九九九九热精品免费视频 | 久久99精品久久久久子伦小说 | 欧美区亚洲区 | 99伊人| 久久久久成人精品一区二区 | 巴西一级毛片 | 女人18女人毛片 | 国产欧美精品一区二区三区–老狼 | 操亚洲美女 | 亚洲欧美一区二区三区综合 | 亚洲国产综合精品中文字幕 | 精品国产一区二区三区2021 | 久久性精品 | 天天插天天舔 | www.色午夜| 女人18毛片a级毛片 女人18毛片a级毛片免费 | 欧美国产亚洲精品高清不卡 | 久热免费在线观看 | 久久九九有精品国产23百花影院 | 久久精品免视看国产成人2021 | 羞羞视频免费网站在线 | 欧美一级毛片在线观看 | 天天爽夜夜爽人人爽 | 色噜噜国产精品视频一区二区 | 国产精品亚洲欧美日韩一区在线 | 亚洲区视频 |