Spring_国际化信息设置

Posted 大梦几千秋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘。

 

  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_国际化信息设置的主要内容,如果未能解决你的问题,请参考以下文章

Spring的MVC国际化,动态设置默认语言如何实现?

spring国际化,基于数据库的信息配置

spring boot + thymeleaf 3 国际化

Spring security实现国际化问题

Spring Boot 国际化(messages.properties)

spring国际化locale的代码原理以及拓展配置