簡(jiǎn)介
在之前項(xiàng)目的基礎(chǔ)上實(shí)現(xiàn)登陸界面的國(guó)際化
Tip:國(guó)際化:所謂國(guó)際化就是可以讓用戶選擇不同的語(yǔ)言顯示
步驟
- 創(chuàng)建一個(gè)自己的LocaleResolver類怜俐,程序中命名為MyLocaleResolver刑赶,在該類重寫resolveLocale方法推正,該方法用于接受前端HTML中鏈接的參數(shù)朴摊,從而進(jìn)行邏輯判斷媚狰,返回一個(gè)Locale類的對(duì)象沪摄,該對(duì)象決定了將要顯示的語(yǔ)言溪胶。
補(bǔ)充英文翻譯:
- locale:語(yǔ)言環(huán)境
- resolver:解析器
代碼:
public class MyLocaleResolver implements LocaleResolver
{
@Override
public Locale resolveLocale(HttpServletRequest request)
{
String lang = request.getParameter("lang");
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(lang))
{
String[] split = lang.split("_");
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
{
}
}
-
新建一個(gè)MyMVCConfig類搂擦,該類繼承于WebMvcConfigurer,使用@Configuration注解表示這個(gè)類是用于配置SpringBoot的哗脖,在其中重寫方法addViewControllers瀑踢,直接控制視圖解析器,對(duì)主頁(yè)而言相較于使用Controller才避,該方法更佳橱夭。實(shí)現(xiàn)localeResolver方法,該方法用@Bean進(jìn)行注解桑逝,那么這個(gè)對(duì)象就會(huì)交由Spring進(jìn)行管理棘劣,這樣自定義的國(guó)際化組件才能生效。
代碼:
@Configuration public class MyMVCConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); registry.addViewController("/index.html").setViewName("index"); } @Bean public LocaleResolver localeResolver() { return new MyLocaleResolver(); } }
-
運(yùn)行查看結(jié)果
- 默認(rèn)情況下使用瀏覽器中使用的默認(rèn)語(yǔ)言楞遏,例如中文
- 點(diǎn)擊“English”鏈接茬暇,顯示英文界面
- 點(diǎn)擊“中文”鏈接,再次返回中文界面寡喝,與默認(rèn)界面相同
至此國(guó)際化完成糙俗。
補(bǔ)充知識(shí)
-
@Bean注解
Spring的@Bean注解用于告訴方法,產(chǎn)生一個(gè)Bean對(duì)象预鬓,然后這個(gè)Bean對(duì)象交給Spring管理巧骚。產(chǎn)生這個(gè)Bean對(duì)象的方法Spring只會(huì)調(diào)用一次,隨后這個(gè)Spring將會(huì)將這個(gè)Bean對(duì)象放在自己的IOC容器中。
SpringIOC 容器管理一個(gè)或者多個(gè)bean劈彪,這些bean都需要在@Configuration注解下進(jìn)行創(chuàng)建竣蹦,在一個(gè)方法上使用@Bean注解就表明這個(gè)方法需要交給Spring進(jìn)行管理。
-
@Configuration注解
從Spring3.0沧奴,@Configuration用于定義配置類草添,可替換xml配置文件,被注解的類內(nèi)部包含有一個(gè)或多個(gè)被@Bean注解的方法扼仲,這些方法將會(huì)被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進(jìn)行掃描远寸,并用于構(gòu)建bean定義,初始化Spring容器屠凶。
參考鏈接
簡(jiǎn)而言之:指示一個(gè)類聲明一個(gè)或多個(gè)@Bean方法驰后,并且可以由Spring容器處理,以便在運(yùn)行時(shí)為這些bean生成BeanDefinition和服務(wù)請(qǐng)求