SpringSession微服务

一.在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项目的结构,希望能帮到大家。

第一个项目;

第二个项目:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值