亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Boot REST國(guó)際化的實(shí)現(xiàn)代碼

 更新時(shí)間:2018年10月30日 14:25:56   作者:banq  
本文我們將討論如何在現(xiàn)有的Spring Boot項(xiàng)目中添加國(guó)際化。只需幾個(gè)簡(jiǎn)單的步驟即可實(shí)現(xiàn)Spring Boot應(yīng)用的國(guó)際化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本指南將向您展示如何輕松只需幾個(gè)簡(jiǎn)單的步驟即可實(shí)現(xiàn)Spring Boot應(yīng)用的國(guó)際化,從而總是在一個(gè)地方處理語(yǔ)言環(huán)境問題。

我們將討論如何在現(xiàn)有的Spring Boot項(xiàng)目中添加國(guó)際化。當(dāng)您處理應(yīng)該為來自不同國(guó)家/地區(qū)的用戶提供不同語(yǔ)言服務(wù)的項(xiàng)目時(shí),app國(guó)際化的問題變得很常見。比如,你需要向中國(guó)用戶提供中文回復(fù)信息,并向法國(guó)用戶提供法語(yǔ)信息,那么讓我們來看看如何在Spring Boot中實(shí)現(xiàn)它。

讓我們使用Spring Initializer創(chuàng)建項(xiàng)目 ,這使得項(xiàng)目的創(chuàng)建更容易。選擇Web,Security,JPA,Actuator,Devtools等模塊。

下載項(xiàng)目后,解壓縮,并用打開IntelliJ IDEA打開。

第一件事是創(chuàng)建CustomLocaleResolver類,它將負(fù)責(zé)定義用戶的語(yǔ)言環(huán)境。

@Configuration
<b>public</b> <b>class</b> CustomLocaleResolver 
       <b>extends</b> AcceptHeaderLocaleResolver 
       implements WebMvcConfigurer {

  List<Locale> LOCALES = Arrays.asList(
     <b>new</b> Locale(<font>"en"</font><font>),
     <b>new</b> Locale(</font><font>"fr"</font><font>));

  @Override
  <b>public</b> Locale resolveLocale(HttpServletRequest request) {
   String headerLang = request.getHeader(</font><font>"Accept-Language"</font><font>);
   <b>return</b> headerLang == <b>null</b> || headerLang.isEmpty()
      ? Locale.getDefault()
      : Locale.lookup(Locale.LanguageRange.parse(headerLang), LOCALES);
  }

  @Bean
  <b>public</b> ResourceBundleMessageSource messageSource() {
   ResourceBundleMessageSource rs = <b>new</b> ResourceBundleMessageSource();
   rs.setBasename(</font><font>"messages"</font><font>);
   rs.setDefaultEncoding(</font><font>"UTF-8"</font><font>);
   rs.setUseCodeAsDefaultMessage(<b>true</b>);
   <b>return</b> rs;
  }
}
</font>

這里告訴我們項(xiàng)目中支持2個(gè)語(yǔ)言環(huán)境:en和fr。在名為“ Accept-Language ” 的http的Header中傳遞語(yǔ)言環(huán)境。因此,如果Header存在這個(gè)變量名且它不為空,我們將使用它的語(yǔ)言環(huán)境,否則 - 我們將使用默認(rèn)語(yǔ)言環(huán)境,即en。

接下來讓我們創(chuàng)建一個(gè)類,負(fù)責(zé)根據(jù)指定的語(yǔ)言環(huán)境選擇正確的語(yǔ)言信息。我將其稱為Translator,它將有一個(gè)單獨(dú)的方法,它將接受應(yīng)翻譯的信息代碼。

@Component
<b>public</b> <b>class</b> Translator {

  <b>private</b> <b>static</b> ResourceBundleMessageSource messageSource;

  @Autowired
  Translator(ResourceBundleMessageSource messageSource) {
   Translator.messageSource = messageSource;
  }

  <b>public</b> <b>static</b> String toLocale(String msgCode) {
   Locale locale = LocaleContextHolder.getLocale();
   <b>return</b> messageSource.getMessage(msg, <b>null</b>, locale);
  }
}

messageSource.getMessage(...)接受入?yún)ⅰ癿sg”。但這并不是應(yīng)該翻譯的信息,它只是信息代碼?,F(xiàn)在我們還沒有任何信息代碼定義,所以現(xiàn)在定義信息代碼。

在resources文件夾下,創(chuàng)建兩個(gè)文件:messages.properties和messages_fr.properties。

這是messages.properties的內(nèi)容:

hello=Hello World!

welcome=Welcome to this guide!

這里是messages_fr.properties的內(nèi)容:

hello=Bonjour le Monde!

welcome=Bienvenue dans ce guide!

在這里我們已經(jīng)定義了我們的消息代碼。他們是“ hellp ”和“ welcome ”?,F(xiàn)在你可以指導(dǎo)我們應(yīng)該將哪些代碼傳遞給toLocale(String msgCode)方法,這樣才能根據(jù)用戶的語(yǔ)言環(huán)境獲取適當(dāng)?shù)南ⅰ?/p>

可能最后一步是創(chuàng)建簡(jiǎn)單的控制器,讓我們將它命名為MainController,它只有一個(gè)端點(diǎn),它將接受消息代碼,我們將其作為請(qǐng)求參數(shù)傳遞給HTTP請(qǐng)求。

@RestController
@RequestMapping(value =“/ api”)
<b>public</b> <b>class</b> MainController {

@GetMapping()
<b>public</b> String getMessage(@RequestParam(“msg”)String msg){
<b>return</b> Translator。toLocale(msg) ;
}
}

現(xiàn)在已經(jīng)完成!

使用CURL發(fā)出簡(jiǎn)單的請(qǐng)求:

curl -X GET -H "Accept-Language: fr" 'http://localhost:8080/api?msg-welcome'

這個(gè)將返回法語(yǔ)的welcome信息:

Bienvenue dans ce guide!

再發(fā)出請(qǐng)求:

curl -X GET -H "Accept-Language: en" 'http://localhost:8080/api?msg-welcome'

這個(gè)將返回英語(yǔ)的welcome信息:

welcome to this guide!

正如你看到:響應(yīng)會(huì)根據(jù)請(qǐng)求中傳遞的“ Accept-Language ”標(biāo)頭的值而有所不同。這樣,我們不需要檢查每個(gè)控制器方法中請(qǐng)求中傳遞的內(nèi)容,然后將其進(jìn)一步傳遞給服務(wù)層。我們現(xiàn)在可以在一個(gè)單獨(dú)的地方執(zhí)行此操作,即CustomLocaleResolver類。

源碼: GitHub

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • centos7如何通過systemctl啟動(dòng)springboot服務(wù)代替java -jar方式啟動(dòng)

    centos7如何通過systemctl啟動(dòng)springboot服務(wù)代替java -jar方式啟動(dòng)

    這篇文章主要介紹了centos7如何通過systemctl啟動(dòng)springboot服務(wù)代替java -jar方式啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • Java調(diào)用opencv實(shí)現(xiàn)圖片矯正功能

    Java調(diào)用opencv實(shí)現(xiàn)圖片矯正功能

    這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用opencv實(shí)現(xiàn)圖片矯正功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • java實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字

    java實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • java設(shè)計(jì)模式之組合模式(Composite)

    java設(shè)計(jì)模式之組合模式(Composite)

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之組合模式Composite,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • springCloud集成nacos config的過程

    springCloud集成nacos config的過程

    本文介紹spring cloud集成nacos config的過程,通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 關(guān)于訪問后端接口報(bào)404錯(cuò)誤問題的解決方法(全網(wǎng)最細(xì)!)

    關(guān)于訪問后端接口報(bào)404錯(cuò)誤問題的解決方法(全網(wǎng)最細(xì)!)

    404頁(yè)面的出現(xiàn)會(huì)降低用戶體驗(yàn),那么導(dǎo)致404頁(yè)面出現(xiàn)的原因是什么呢?這篇文章主要給大家介紹了關(guān)于訪問后端接口報(bào)404錯(cuò)誤問題的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 詳解如何通過Java實(shí)現(xiàn)壓縮PDF文檔

    詳解如何通過Java實(shí)現(xiàn)壓縮PDF文檔

    PDF文檔是我們?nèi)粘^k公中使用最頻繁的文檔格式。但因?yàn)榇蠖鄶?shù)PDF文檔都包含很多頁(yè)面圖像或大量圖片,這就導(dǎo)致PDF文檔過大,處理起來較為麻煩。本文將介紹如何通過Java應(yīng)用程序壓縮PDF文檔,需要的可以了解一下
    2022-12-12
  • 程序員最喜歡的ThreadLocal使用姿勢(shì)

    程序員最喜歡的ThreadLocal使用姿勢(shì)

    ThreadLocal并不是一個(gè)Thread,而是Thread的局部變量,也許把它命名為ThreadLocalVariable更容易讓人理解一些,下面這篇文章主要給大家介紹了程序員最喜歡的ThreadLocal使用姿勢(shì),需要的朋友可以參考下
    2022-02-02
  • Java多線程面試題(面試官常問)

    Java多線程面試題(面試官常問)

    這篇文章主要介紹了Java多線程面試題(面試官常問),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • IDEA中Maven依賴包無法下載或?qū)氲慕鉀Q方案(系統(tǒng)缺失文件導(dǎo)致)

    IDEA中Maven依賴包無法下載或?qū)氲慕鉀Q方案(系統(tǒng)缺失文件導(dǎo)致)

    在配置Maven環(huán)境時(shí),可能會(huì)遇到各種報(bào)錯(cuò)問題,首先確保Maven路徑配置正確,例如使用apache-maven-3.5.0版本,則需要在系統(tǒng)環(huán)境變量的Path中添加其bin目錄路徑,并上移優(yōu)先級(jí),接下來,在Maven的conf目錄下修改settings.xml文件,將鏡像源改為阿里云
    2024-09-09

最新評(píng)論