亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

广宗县| 太谷县| 青铜峡市| 龙泉市| 沭阳县| 平陆县| 和硕县| 唐河县| 新巴尔虎左旗| 封开县| 崇明县| 凤冈县| 方正县| 建始县| 南乐县| 鲁甸县| 曲麻莱县| 康平县| 新民市| 抚远县| 广德县| 林州市| 盘山县| 灯塔市| 宜兰市| 呼图壁县| 吴忠市| 黄平县| 赣州市| 曲阜市| 封丘县| 乌海市| 铜川市| 准格尔旗| 门源| 阿瓦提县| 若尔盖县| 高密市| 内丘县| 朝阳县| 重庆市|