Spring Session 的配置非常简单,根据官方文档的说明,只需配置依赖及配置文件即可使用,无需任何代码相关的配置项。
首先需要添加依赖项:
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
</dependencies>
然后在 application.properties 中添加以下内容:
spring.redis.host=localhost # Redis server host.
spring.redis.password= # Login password of the redis server.
spring.redis.port=6379 # Redis server port.
spring.session.store-type=redis # Session store type.
至此就配置完成了,现在就可以写两个简单的方法去测试一下。例如以下:
@GetMapping(value = "/set")
public String setSession(HttpSession session){
session.setAttribute("username","sherry");
return "ok";
}
@GetMapping(value = "/get")
public String getSession(HttpSession session){
return (String) session.getAttribute("username");
}
然后使用 maven package 将其打成 jar 包,若需要跳过测试,可使用 mvn -Dmaven.test.skip=true package
,或者在 pom.xml 中添加插件依赖:
<plugins>
<!-- ... -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
然后开启两个服务:
$ nohup java -jar app.jar --server.port=8080 &
$ nohup java -jar app.jar --server.port=8081 &
现在在 8080 里面 set,在 8081 里面 get,会发现也可以得到结果。
这里顺便歪个楼,如果服务在前台启动,比如说启动 redis 时未将 redis.conf 中的 daemonize 设置为 yes。此时可以使用 CTRL + Z
将其挂在后台,但此时服务会被暂停,使用 fg
可以将其调回前台继续运行(若后台有多个,默认调回最后启动的那个)。也可以使用 bg
使其后台继续运行。使用 jobs
可查看在后台运行的服务列表。
到此为止就算完成了,但还可以更进一步,在这两个服务前面加一层 Nginx 来做反向代理,还可以设置权重。首先来修改 nginx 的配置文件,一般来说需要修改 nginx.conf,由于我现在的环境是 debian,有一个默认的配置文件位于 /etc/nginx/sites-enabled 下的 default 文件,不同的发行版文件目录结构可能不大一样,可以根据自身情况自行查找。可根据以下示例来写:
upstream wanmei.ml{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
location / {
proxy_pass http://wanmei.ml;
proxy_redirect default;
}
}
然后 nginx -s reload
重新加载配置文件。现在再来访问此服务器的 ip 地址,流量就会经过 nginx 了,可以查看位于 /var/log/nginx 下的 access.log 日志进行确认。