SpringBoot实现session共享和国际化
SpringBoot Session共享
修改pom.xml添加依赖
org.springframework.session spring-session-data-redis
添加配置类 RedisSessionConfig
@Configuration@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)//默认是1800秒过期,这里测试修改为60秒public class RedisSessionConfig {}
添加一个控制器类 SessionController 来进行测试
@RestControllerpublic 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/uid
我们看到两个uid是一样的。
在这里我是使用spring boot redis来实现session共享,你还可以配合使用nginx进行负载均衡,同时共享session。
关于nginx可以参考我的另一篇文章:Nginx详解-服务器集群
spring boot 国际化
在spring boot中实现国际化是很简单的的一件事情。
(1)在resources目录下面,我们新建几个资源文件,messages.properties相当于是默认配置的,当其它配置中找不到记录的时候,最后会再到这个配置文件中去查找。
messages.propertiesmessages_en_US.propertiesmessages_zh_CN.properties
依次在这三个配置文件中添加如下配置值:
msg=我是中国人msg=I'm Chinesemsg=我是中国人
添加完之后,会自动将这几个文件包在一块
需要注意的是这个命名是有讲究的, messages.properties 部分是固定的,不同语言的话,我们可以在它们中间用_区分。为什么是固定的命名,因为源码是硬编码这样命名的。
(2)新建一个配置文件 LocaleConfig
@Configuration@EnableAutoConfiguration@ComponentScanpublic 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,通过#可以直接获取国际化配置文件中的配置项的值。
$Title$English(US)简体中文
(5)运行查看效果
欢迎加入Java高级架构学习交流群:375989619
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导 进群修改群备注:开发年限-地区-经验 方便架构师解答问题
免费领取架构师全套视频!!!!!!!!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
(8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)
说到现在现有微服务的几点不足: 1) 对于在微服务体系中、和 Consul 通讯的微服务来讲,使用服务名即可访问。但是对于手 机、web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务器地址、端 口号等。一旦内部发生修改,很麻烦,而且有时候内部服务器是不希望外界直接访问的。 2) 各个业务系统的人无法自由的维护自己负责的服务器; 3) 现有的微服务都是“我家大门常打开”,没有做权限校验。如果把权限校验代码写到每 个微服务上,那么开发工作量太大。 4) 很难做限流、收费等。 ocelot 中文文档:https://blog.csdn.net/sD7O95O/article/details/79623654 资料:http://www.csharpkit.com/apigateway.html 官网:https://github.com/ThreeMammals/Ocelot 腾讯.Net 大队长“张善友”是项目主力开发人员之一。 一、 Ocelot 基本配置 Ocelot 就是一个提供了请求路由、安全验证等功能的 API 网关微服务。 建一个空的 asp.net core...
- 下一篇
如何用Redis实现分布式缓存
第一:Redis 是什么? Redis是基于内存、可持久化的日志型、Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题: 水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在另外一个表; 可靠性需求 Cache的"雪崩"问题让人纠结 Cache面临着快速恢复的挑战 开发成本需求 Cache和DB的一致性维护成本越来越高(先清理DB, 再清理缓存, 不行啊, 太慢了!) 开发需要跟上不断涌入的产品需求 硬件成本最贵的就是数据库层面的机器,基本上比前端的机器要贵几倍,主要是IO密集型,很耗硬件; 维护性复杂 一致性维护成本越来越高; BerkeleyDB使用B树,会一直写新的,内部不会有文件重新组织;这样会导致文件越来越大;大的时候需要进行文件归档,归档的操作...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境