一.在linux中确保启动起来redis和nacos
依赖记得别放<dependencyManagement></dependencyManagement>这个标签去了
1.首先查看已经启动的服务
docker ps
查看有没有安装redis和nacos
2.启动redis和nacos
发现没有启动redis和nacos,我们先来启动它。,你们的指令后面的名字得是你们的哈。
docker start nacos
docker start redis-6379
二.新建idea的maven项目
2.导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
<jwt.version>0.7.0</jwt.version>
<fastjson.version>1.2.60</fastjson.version>
<spring-cloud-alibaba.version>2.0.3.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
3.创建控制类
package com.jr.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
@RestController
@RequestMapping("/demo")
public class DemoController {
@GetMapping
public String show(HttpSession session){
return session.getId();
}
}
4.创建启动类
package com.jr;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootMain {
public static void main(String[] args) {
SpringApplication.run(SpringBootMain.class,args);
}
}
5.创建application.yml
在resources下创建application.yml文件
server:
port: 100
6.再来一个一模一样的项目
此时有两个不同的项目
7.idea中打开第二个项目
然后要改它的application.yml和pom.xml的有些地方。
7.1第二个项目(SpringSessiondemo1)的application.yml
server:
port: 200
7.2 第二个项目(SpringSessiondemo1)的pom.xml
把artifactId这里改成你第二个项目的名字
<groupId>com.jr</groupId>
<artifactId>SpringSessiondemo1</artifactId>
<version>1.0-SNAPSHOT</version>
8.同时启动两个项目
在自己的浏览器上的地址栏访问自己的项目。
第一个项目:
第二个项目;
两个项目的sessionID不一致。
二.两个项目与nacos建立联系
1.两个项目都在pom.xml文件里添加下面的依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.两个项目都在application.yml里添加下面的代码
spring:
session:
store-type: redis
第一个项目:
第二个项目:
3.两个项目都创建application.properties文件
在resources下创建application.properties文件
两个项目的application.properties都添加以下代码
spring.application.name=sessiondemo
4.登录nacos网站
这里可以参考我的另一个博客,因为这有点复杂
在idea使用nacos微服务-CSDN博客
5.配置中心
host是你自己的虚拟机ip
spring:
redis:
host: 192.168.146.39
port: 6379
password: 123456
6.两个项目都创建bootstrap.yml文件
两个项目的bootstrap.yml文件都添加以下代码。
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.146.39:8848
config:
server-addr: 192.168.146.39:8848
file-extension: yaml
namespace: 8920c585-274d-477f-b55f-9324be8da9bd
shared-configs:
- data-id: dz14redisssesiton.yaml
group: DEFAULT_GROUP
inetutils:
preferred-networks: 192.168.116
7.两个项目启动类都添加注解@EnableRedisHttpSession
8.新建SessionConfig配置类
需要创建一个config目录,新建SessionConfig配置类,修改domain作用域。
package com.jr.config;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
public class SessionConfig {
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setCookieName("JSESSIONID");
serializer.setCookiePath("/");
serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
return serializer;
}
@Bean
public RedisSerializer<Object> redisSerializer() {
return new GenericJackson2JsonRedisSerializer();
}
}
9.再到nacos网站
、
10.再次启动我们的idea项目
两个变成一样的了。
三.我的idea项目结构
今天内容到此结束,下面是我idea项目的结构,希望能帮到大家。
第一个项目;
第二个项目: