Spring_国际化信息设置

生命太过短暂,今天放弃了明天不一定能得到。

  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'。

扫描二维码关注公众号,回复: 906415 查看本文章

  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 能够重新加载信息属性,而不必重新编译或重启应用。

猜你喜欢

转载自www.cnblogs.com/dandelZH/p/9053616.html