SpringBoot 에서 분포 식 Session 공 유 를 실현 하 는 상세 한 튜 토리 얼

1.SpringBoot 에서 세 션 공유 실현
1.웹 프로젝트 만 들 기
우 리 는 이전의 경험 에 따라 웹 프로그램 을 만 들 고 이 를 Spring Boot 프로젝트 로 개조 하여 구체 적 인 과정 을 거 쳤 다.

2.의존 팩 추가

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.session</groupId>
 <artifactId>spring-session-data-redis</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.session</groupId>
 <artifactId>spring-session-core</artifactId>
 </dependency>
3.application.yml 파일 만 들 기

server:
 port: 8080
 #  redis
 spring:
 redis:
 host: 127.0.0.1
 port: 6379
 #password: 123456
 jedis:
 pool:
  max-idle: 8
  min-idle: 0
  max-active: 8
  #max-wait: 60000
 #timeout: 3000 #       0
 session:
 #  session    
 store-type: redis
여러 session 의 store-type 을 설정 할 수 있 습 니 다:

저 희 는 redis 를 이용 하여 session 을 집중 적 으로 저장 하여 session 공 유 를 실현 하 는 것 을 선택 하 였 습 니 다.
4.세 션 설정 클래스 만 들 기

package com.yyg.boot.config;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
 
/**
 * @Author    Sun
 * @Date Created in 2020/4/28
 * @Description   Redis Http Session
 */
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
public class RedisHttpSessionConfiguration {
 
}
여기에@EnableRedisHttpSession 설명 을 추가 하면 maxInactiveIntervalInSeconds 속성 을 통 해 Session 의 만 료 시간 을 설정 할 수 있 습 니 다.
5.컨트롤 러 인터페이스 만 드 는 방법
이 인터페이스 방법 은 사용자 가 존재 하지 않 을 때'사용자 가 존재 하지 않 습 니 다'를 알려 줍 니 다.그렇지 않 으 면'사용자 가 존재 합 니 다'를 알려 줍 니 다.

package com.yyg.boot.web;
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
 
/**
 * @Author    Sun
 * @Date Created in 2020/4/28
 * @Description Description
 */
@Slf4j
@RestController
public class SessionController {
 
 @RequestMapping("/session")
 public Object springSession(@RequestParam("username") String username, HttpServletRequest request, HttpSession session) {
 Cookie[] cookies = request.getCookies();
 if (cookies != null && cookies.length > 0) {
  for (Cookie cookie : cookies) {
  log.warn(cookie.getName() + "=" + cookie.getValue());
  }
 }
 
 Object value = session.getAttribute("username");
 if (value == null) {
  log.warn("     ");
  //  session
  session.setAttribute("username", "{username: '" + username + "', age: 30}");
 } else {
  log.warn("    ");
 }
 
 return "username=" + value;
 }
 
}
6.입구 클래스 만 들 기

package com.yyg.boot;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
/**
 * @Author    Sun
 * @Date Created in 2020/4/28
 * @Description Description
 */
@SpringBootApplication
public class SpringSessionApplication {
 
 public static void main(String[] args){
 springapplication.run -        。 -    springapplication        。(SpringSessionApplication.class,args);
 }
 
}
7.전체 프로젝트 구조

8.프로젝트 시작 테스트
브 라 우 저 에 처음 방문 하면 브 라 우 저 에 있 는 username=null 을 볼 수 있 고 콘 솔 에 보 여 주 는 로그 정 보 는'사용자 가 존재 하지 않 습 니 다'로 세 션 이 만 들 어 지지 않 았 음 을 설명 합 니 다.그러나 처음 방문 한 후에 session 은 생 성 되 었 고 redis 에 저장 되 어 지속 적 인 저장 을 실현 했다.다음 그림 을 볼 수 있 습 니 다.

두 번 째 방문 하면 username 에서 새로운 정 보 를 얻 을 수 있 습 니 다.

로그 콘 솔 에서 도'사용자 존재'를 알 리 는 정 보 를 보 았 습 니 다.

또한 레 디 스 콘 솔 에 서 는 TTL 만 료 시간 이 3 천 660 으로 1 초 간격 으로 1 회 리 셋 되 고 3 천 600 초 후 만 료 된다 는 점 을 알 릴 수 있다.

이 때 우 리 는 각각 8080 과 8081 프로 세 스 를 시작 하여 두 프로 세 스에 서 각각 session 인 터 페 이 스 를 테스트 할 수 있다.
\#프로젝트 의 target 디 렉 터 리 에 들 어가 자바-jar 명령 을 실행 하고 jar 패 키 지 를 배치 합 니 다.
F:\onlineWorks\boot-demos\demo43_springsession\target>java -jar demo43_springsession-1.0-SNAPSHOT.jar --server.port=8080
F:\onlineWorks\boot-demos\demo43_springsession\target>java -jar demo43_springsession-1.0-SNAPSHOT.jar --server.port=8081


브 라 우 저 에서 8080 과 8081 포트 에 접근 할 때 공 통 된 Session 정 보 를 볼 수 있 습 니 다.

두 개의 서로 다른 프로 세 스 포트 에서 각각 같은 session 정 보 를 방문 한 것 을 볼 수 있 습 니 다.이 는 분포 식 프로 세 스 에서 session 공 유 를 실현 했다 는 것 을 설명 합 니 다.스프링 세 션 이 생 긴 후에 도 세 션 공 유 를 실현 하 는 것 은 간단 하 다 는 것 을 알 수 있다.
총결산
SpringBoot 에서 분포 식 세 션 공 유 를 실현 하 는 상세 한 튜 토리 얼 에 관 한 글 은 여기까지 입 니 다.더 많은 SpringBoot 분포 식 세 션 공유 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기