天天看點

Spring-國際化資訊03-容器級的國際化資訊資源

導讀

概述

執行個體

注意事項

Spring-國際化資訊01-基礎知識

Spring-國際化資訊02-MessageSource接口

Spring-國際化資訊03-容器級的國際化資訊資源

我們檢視ApplicationContext中的源碼可以看到

ApplicationContext 實作了 MessageSource 接口。

在一般情況下,國際化資訊資源應該是容器級。我們一般不會将MessageSource作為一個Bean注入到其他的Bean中,相反MessageSource作為容器的基礎設施向容器中所有的Bean開放。

國際化資訊一般在系統輸出資訊時使用,如Spring MVC的頁面标簽,控制器Controller等,不同的子產品都可能通過這些元件通路國際化資訊,是以Spring就将國際化消息作為容器的公共基礎設施對所有元件開放。

Spring根據反射機制從BeanDefinitionRegistry中找出名稱為“messageSource”且類型為org.springframework.context.MessageSource的Bean,将這個Bean定義的資訊資源加載為容器級的國際化資訊資源.

代碼已托管到Github—> https://github.com/yangshangwei/SpringMaster

Spring-國際化資訊03-容器級的國際化資訊資源

資源檔案

配置檔案

測試類

運作結果:

Spring-國際化資訊03-容器級的國際化資訊資源

MessageSource Bean名字必須命名為“messageSource”,以上代碼将抛出NoSuchMessageException異常

假設我們将id=”messageSource” 改為 id=”messageSource1”

再此運作

Spring-國際化資訊03-容器級的國際化資訊資源

繼續閱讀