從.Net到Java學習系列目錄html
修改pom.xml添加依賴nginx
<!--spring session--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
添加配置類RedisSessionConfigredis
@Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)//默認是1800秒過時,這裏測試修改成60秒 public class RedisSessionConfig { }
添加一個控制器類SessionController來進行測試spring
@RestController public class SessionController { @RequestMapping("/uid") String uid(HttpSession session) { UUID uid = (UUID) session.getAttribute("uid"); if (uid == null) { uid = UUID.randomUUID(); } session.setAttribute("uid", uid); return session.getId(); } }
先訪問http://localhost:8083/boot/uid瀏覽器
而後修改配置文件application.yml服務器
spring:
profiles:
active: test
從新運行IDEA,test配置文件配置的端口是8085,因此瀏覽器輸入http://localhost:8085/boot/uidsession
咱們看到兩個uid是同樣的。app
在這裏我是使用spring boot redis來實現session共享,你還能夠配合使用nginx進行負載均衡,同時共享session。負載均衡
關於nginx能夠參考個人另外一篇文章:Nginx詳解-服務器集羣dom
在spring boot中實現國際化是很簡單的的一件事情。
(1)在resources目錄下面,咱們新建幾個資源文件,messages.properties至關因而默認配置的,當其它配置中找不到記錄的時候,最後會再到這個配置文件中去查找。
messages.properties
messages_en_US.properties
messages_zh_CN.properties
依次在這三個配置文件中添加以下配置值:
msg=我是中國人
msg=I'm Chinese
msg=我是中國人
添加完以後,會自動將這幾個文件包在一塊
須要注意的是這個命名是有講究的,messages.properties部分是固定的,不一樣語言的話,咱們能夠在它們中間用_區分。爲何是固定的命名,由於源碼是硬編碼這樣命名的。
(2)新建一個配置文件LocaleConfig
@Configuration @EnableAutoConfiguration @ComponentScan public class LocaleConfig extends WebMvcConfigurerAdapter { @Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); // 默認語言 slr.setDefaultLocale(Locale.CHINA); return slr; } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); // 參數名 lci.setParamName("lang"); return lci; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } }
(3)在控制器中,咱們添加測試用的方法
// i18n @RequestMapping("/") public String i18n() { return "i18n"; } @RequestMapping("/changeSessionLanauage") public String changeSessionLanauage(HttpServletRequest request, HttpServletResponse response, String lang){ System.out.println(lang); LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if("zh".equals(lang)){ localeResolver.setLocale(request, response, new Locale("zh", "CN")); }else if("en".equals(lang)){ localeResolver.setLocale(request, response, new Locale("en", "US")); } return "redirect:/"; }
(4)添加視圖來展現,在templates下新建文件i18n.html,經過#能夠直接獲取國際化配置文件中的配置項的值。
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>$Title$</title> </head> <body> <a href="/changeSessionLanauage?lang=en">English(US)</a> <a href="/changeSessionLanauage?lang=zh">簡體中文</a> <br /> <h3 th:text="#{msg}"></h3> <h4 th:text="${message}"></h4> </body> </html>
(5)運行查看效果