一.在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 {@GetMappingpublic 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:8848config:server-addr: 192.168.146.39:8848file-extension: yamlnamespace: 8920c585-274d-477f-b55f-9324be8da9bdshared-configs:- data-id: dz14redisssesiton.yamlgroup: DEFAULT_GROUPinetutils: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 {@Beanpublic CookieSerializer cookieSerializer() {DefaultCookieSerializer serializer = new DefaultCookieSerializer();serializer.setCookieName("JSESSIONID");serializer.setCookiePath("/");serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");return serializer;}@Beanpublic RedisSerializer<Object> redisSerializer() {return new GenericJackson2JsonRedisSerializer();}
}
9.再到nacos网站
、
10.再次启动我们的idea项目
两个变成一样的了。
三.我的idea项目结构
今天内容到此结束,下面是我idea项目的结构,希望能帮到大家。
第一个项目;
第二个项目: