1. 程式人生 > >Spring_國際化信息設置

Spring_國際化信息設置

mes webconfig TP intern can message LV 根據 根路徑

生命太過短暫,今天放棄了明天不一定能得到。

Spring有多個信息源的類,它們都實現了MessageSource接口。在這些類中,最常見和有用的是 ResourceBundleMessageSource

ReloadableResourceBundleMessageSource

1.配置ResourceBundleMessageSource

  1)使用Java配置   

package config;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @Configuration @EnableWebMvc @ComponentScan("study.practice") public class WebConfig extends
WebMvcConfigurerAdapter { /** * 配置JSP視圖解析器:InternalResourceViewResolver * @return */ @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); //添加前綴 resolver.setPrefix("/WEB-INF/views"); //添加後綴 resolver.setSuffix(".jsp"); resolver.setViewClass(JstlView.class); return resolver; } /** * 配置國際化信息源 ResourceBundleMessageSource * @return */ @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("messages"); return messageSource; } }

  2)使用XML配置

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
            p:basename="messages"
        />

  設置該bean的baseName屬性,ResourceBundleMessageSource 會試圖在根路徑的屬性文件中解析信息,這些屬性文件的名稱時根據這個基礎名稱衍生得到的,如以上代碼baseName為‘messages‘,那麽這些屬性文件可命名為‘messages_zh.properties‘或‘messages_us.properties‘。

2.配置ReloadableResourceBundleMessageSource

  1)使用Java配置

@Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource =
                new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("file:///etc/source/messages");
        messageSource.setCacheSeconds(10);
        return messageSource;
    }

  2)使用XML配置

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
            p:basename="file:///etc/source/messages"
            p:cacheSeconds="10"
        />

這兩種方案的工作方式非常類似,區別在於ReloadableResourceBundleMessageSource 能夠重新加載信息屬性,而不必重新編譯或重啟應用。

Spring_國際化信息設置