DispatcherServlet使得开发人员可以通过客户端的Locale来自动转换消息进行国际化;在整个国际化的过程中,主要分成两步,一是解析客户端的Locale,一是查找国际化的消息;
1. 解析Locale
解析Locale是通过LocaleResolver来完成的。
当有请求时,DispatcherServlet查找LocaleResolver类型的Bean,如果找到,则使用它获取并设置Locale。在这之后,通过RequestContext.getLocale方法则可以获取到Locale。
Spring默认在i18n包中提供了几种实现,如通过Cookie、Header、Session等方式来获取Locale的实现等。
1.1 定义所使用的LocaleResolver:
Spring Boot中可以通过Bean注解来定义所使用的LocaleResolver
@Configuration
public class AdditionalBeanConfig {
@Bean
public LocaleResolver getLocalResolver() {
return new CookieLocaleResolver();
}
}
默认情况下,SpringBoot中是没有包含LocaleResolver对象的。
1.2 获取Locale
如果需要在应用中获取当前客户端所使在的Locale,在Controller中通过以下方式查找Locale:
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/locale")
public String locale(HttpServletRequest request) {
// 第一种方式,通过构建RequestContext来查找Locale
RequestContext requestContext = new

本文详细介绍了SpringBoot实现国际化的过程,包括通过LocaleResolver解析客户端的Locale,利用MessageSource接口查找消息,以及如何配置StaticMessageSource和ResourceBundleMessageSource。在实际应用中,通常使用ResourceBundleMessageSource结合国际化属性文件来加载消息,简化后的Controller代码可以进一步减少手动获取Locale的步骤。
最低0.47元/天 解锁文章
6134





