分布式Web網(wǎng)站一般都會(huì)碰到集群session共享問(wèn)題,之前也做過(guò)一些Spring3的項(xiàng)目,當(dāng)時(shí)解決這個(gè)問(wèn)題做過(guò)兩種方案,一是利用nginx,session交給nginx控制,但是這個(gè)需要額外工作較多;還有一種是利用一些tomcat上的插件,修改tomcat配置文件,讓tomcat自己去把Session放到Redis/Memcached/DB中去。這兩種各有優(yōu)缺,也都能解決問(wèn)題。
但是現(xiàn)在項(xiàng)目全線Spring Boot,并不自己維護(hù)Tomcat,而是由Spring去啟動(dòng)Tomcat。這樣就會(huì)有一個(gè)問(wèn)題:在服務(wù)器上并不存在一個(gè)持久存在的Tomcat程序,這樣也無(wú)從去修改Tomcat的配置文件了。經(jīng)過(guò)了一番搜索,發(fā)現(xiàn)Spring果然對(duì)這個(gè)問(wèn)題有自己的解決方案,那就是Spring-Session.
Spring-Session是通過(guò)過(guò)濾器實(shí)現(xiàn)的session共享,具體原理可以自己去官網(wǎng)查,這里只說(shuō)一下如何配置。整個(gè)項(xiàng)目基于Spring Boot,如果不是Boot項(xiàng)目就需要自己去調(diào)整了。
項(xiàng)目需要先準(zhǔn)備一個(gè)Redis服務(wù),在本地啟動(dòng)一個(gè)即可。還需要有一個(gè)已經(jīng)使用session但是未做session共享的Spring Boot項(xiàng)目,下面我就講述一下如何給這個(gè)項(xiàng)目加上基于redis的session共享。
引入依賴
首先,要在maven中加入以下依賴:
org.springframework.session spring-session 1.2.2.RELEASE org.springframework.boot spring-boot-starter-redis
<groupId>org.springframework.session</groupId> <artifactId&g