欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring boot自定义国际化不生效

程序员文章站 2022-04-15 19:06:11
Spring boot自定义国际化不生效今天在学自定义国际化的时候,代码始终不生效,最后发现自己名称写的不一致o(╥﹏╥)o一个地方写的cn,一个地方写的en,服了自己了除此之外,还了解到个可能不生效的原因在WebMvcAutoConfiguration里边自动配置的localeResolver1、默认是加载系统的2、自己定义了localeResolver加载自己定义的源码:@Bean@ConditionalOnMissingBean@ConditionalOnProperty(pre...

Spring boot自定义国际化不生效

今天在学自定义国际化的时候,代码始终不生效,最后发现自己名称写的不一致o(╥﹏╥)o
Spring boot自定义国际化不生效
一个地方写的cn,一个地方写的en,服了自己了

除此之外,还了解到个可能不生效的原因

WebMvcAutoConfiguration里边自动配置的localeResolver
1、默认是加载系统的
2、自己定义了localeResolver加载自己定义的
源码:

@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
public LocaleResolver localeResolver() {
	if (this.mvcProperties.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
		return new FixedLocaleResolver(this.mvcProperties.getLocale());
	}
	AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
	localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
	return localeResolver;
}

所以当我们写自己写的LocaleResolver不生效的原因只能是@bean没有注册成功

  1. 了解到方法名必须是localeResolver()
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer{
        @Bean
        public LocaleResolver localeResolver() {
            return new MyLocaleResolver();
        }
    }
    
  2. 或者bean里面必须是localeResolver
    @Configuration
    	public class MyMvcConfig implements WebMvcConfigurer{
    	    @Bean("localeResolver")
    	    public LocaleResolver locale() {
    	        return new MyLocaleResolver();
    	    }
    	}
    

原因好像是源码里面固定的,具体是参考别的大佬的解释的

详情见:https://www.cnblogs.com/ql123456/p/12173219.html

在《Spring Boot 2 Recipes: A Problem-Solution Approach》书中提到这样一句话:

You can also define a locale resolver by registering a bean of type LocaleResolver in the web application context.
You must set the bean name of the locale resolver to localeResolver so it can be autodetected

上述英语意思为:在自定义localeResolver时方法名必须一致

注意:
写的时候一定要小心,别写错

本文地址:https://blog.csdn.net/weixin_44635198/article/details/107581138

相关标签: SpringBoot