今天在学自定义国际化的时候,代码始终不生效,最后发现自己名称写的不一致o(╥﹏╥)o
一个地方写的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
没有注册成功
localeResolver()
@Configuration
public class MyMvcConfig implements WebMvcConfigurer{
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
}
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
如对本文有疑问, 点击进行留言回复!!
网友评论