Spring的國際化資源messageSource


Spring中可以使用兩個類加載資源文件:ReloadableResourceBundleMessageSource和ResourceBundleMessageSource。

可配置如下messageSource這個bean id不能變:

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setCacheSeconds(10); //reload messages every 10 seconds
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setUseCodeAsDefaultMessage(true);
        return messageSource;
    }

或者xml

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
    <list>
      <value>resources/messages</value>
    </list>
  </property>
</bean>

Spring提供了一個接口MessageSource用於獲取國際化信息,ReloadableResourceBundleMessageSource和ResourceBundleMessageSource都是繼承了該接口的一個抽象實現類AbstractMessageSource,繼承該抽象類的有四個類,分別是:

StaticMessageSource  主要用於測試環境,並不用於生產環境
SpringSecurityMessageSource  用於Spring security的國際化信息
ReloadableResourceBundleMessageSource  可以在不用重新啟動服務器的情況下,讀取更改后的資源文件
ResourceBundleMessageSource  用於生產環境

用法示例:

public class MessageSourceTest extends TestCase {
    public void testResourceBundleMessageSource(){
        MessageSource messageSource=new ClassPathXmlApplicationContext("applicationcontext.xml");
        String username_us=messageSource.getMessage("userName_lable",new Object[1],Locale.US);
        String username_chinese=messageSource.getMessage("userName_lable",new Object[0],Locale.CHINESE);
        System.out.println("chinese:"+username_chinese);
        System.out.println("english:"+username_us);
    }
}

chinese:用戶名
english:userName

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM