カスタムlocaleResolverが有効でない問題

1185 ワード

質問:


国際化の過程でlocaleResolverをカスタマイズし、@Bean注入を有効にしない
私はもともと注入した
public class MyLocalResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String l = request.getParameter("l");
        System.out.println(l);
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}
    @Bean
    public LocaleResolver mylocaleResolver(){
        return new MyLocalResolver();
    }


@ConditonalOnMissingBeanは、コンテナにbeanがない場合にspringbootが自動的に構成され、beanの方式を判断するときにbeanのidを2次元で使用します@Bean方式でBeanを構成します.方法はBeanのidです.構成クラスでlocaleResolverを構成する方法を確認します.メソッド名はlocaleResolverではありません.そのためspringbootの構成は有効です

解決策


メソッド名を「localeResolver」に変更
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocalResolver();
    }