中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springmvc如何實現國際化自動配置

發布時間:2020-08-04 14:08:22 來源:億速云 閱讀:254 作者:小豬 欄目:編程語言

這篇文章主要講解了Springmvc如何實現國際化自動配置,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

在 springmvc 中通過 LocalResover 獲取區域信息對象 Local(對語言信息、國家代碼等的封裝),進行國際化配置,在 springboot 為我們提供了默認的區域信息解析器

@Configuration(
  proxyBeanMethods = false
)
@ConditionalOnWebApplication(
  type = Type.SERVLET
)
@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
@AutoConfigureOrder(-2147483638)
@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})
public class WebMvcAutoConfiguration {
  public static final String DEFAULT_PREFIX = "";
  public static final String DEFAULT_SUFFIX = "";
  private static final String[] SERVLET_LOCATIONS = new String[]{"/"};
 
    @Bean
    @ConditionalOnMissingBean  //容器中沒有 LocaleResolver 時
    @ConditionalOnProperty(
      prefix = "spring.mvc",
      name = {"locale"}
    )
    public LocaleResolver localeResolver() {        //如果屬性中指定用固定的就用固定的 FixedLocaleResolver 區域化信息解析器
      if (this.mvcProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties.LocaleResolver.FIXED) {
        return new FixedLocaleResolver(this.mvcProperties.getLocale());
      } else {          //否則使用 AcceptHeaderLocaleResolver 區域化信息解析器
        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
        localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
        return localeResolver;
      }
    }

AcceptHeaderLocaleResolver 在 request 請求頭中獲取到區域信息

public class AcceptHeaderLocaleResolver implements LocaleResolver {
  private final List<Locale> supportedLocales = new ArrayList(4);
 
  public Locale resolveLocale(HttpServletRequest request) {
    Locale defaultLocale = this.getDefaultLocale();
    if (defaultLocale != null && request.getHeader("Accept-Language") == null) {
      return defaultLocale;
    } else {
      Locale requestLocale = request.getLocale();
      List<Locale> supportedLocales = this.getSupportedLocales();
      if (!supportedLocales.isEmpty() && !supportedLocales.contains(requestLocale)) {
        Locale supportedLocale = this.findSupportedLocale(request, supportedLocales);
        if (supportedLocale != null) {
          return supportedLocale;
        } else {
          return defaultLocale != null &#63; defaultLocale : requestLocale;
        }
      } else {
        return requestLocale;
      }
    }
  }

默認就是更具請求頭帶來的區域信息獲取 Local 進行國際化

我們可以通過定義自己的區域化解析器生成區域化信息

public class MyLocaleResolver implements LocaleResolver {  
  @Override
  public Locale resolveLocale(HttpServletRequest request) {
    String l = request.getParameter("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) {
  }
}
 
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
  @Bean
  public LocaleResolver localeResolver(){
    return new MyLocaleResolver();
  }
}

量變引起質變,這就是我所理解的因果。

看完上述內容,是不是對Springmvc如何實現國際化自動配置有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尼木县| 铜川市| 金昌市| 常山县| 乌拉特中旗| 厦门市| 石首市| 临颍县| 兴国县| 芜湖市| 新沂市| 应用必备| 兴安盟| 玉门市| 防城港市| 勐海县| 海盐县| 汪清县| 景宁| 丽水市| 凤冈县| 抚宁县| 宁南县| 邢台县| 应城市| 延边| 永兴县| 留坝县| 嘉义市| 庆安县| 克东县| 漳平市| 兰溪市| 郧西县| 建瓯市| 友谊县| 麻阳| 华宁县| 叙永县| 惠安县| 金秀|