2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02
이어서 Spring Boot Framework에 설정은 다 완료했고 실제 redis를 조회하기 위한 redis-cli파일을 설치해본다.
redis 공식문서를 보면
We recommend using Linux for deployment.
Redis may work in Solaris-derived systems like SmartOS, but the support is best effort.
There is no official support for Windows builds.
Linux 개발 환경에서 사용하기를 권장하고 Window는 지원하지 않기에 공식홈페이지에서 다운받기는 어려웠다.
https://github.com/microsoftarchive/redis/releases
구글링해보니 redis Github에 있는 Window 설치파일이 있어 해당 파일을 다운받았다.
다운받고 실행 명령어는 다음과 같다.
C:\Program Files\Redis>redis-cli.exe
하면 default 설정값인 host와 port로 연결된다.
그 config 설정은 redis.windows-service.conf 파일에서 할 수 있다.
이제 본격적으로 Spring Boot 환경에서 Session을 redis 설정 및 테스트를 진행해보자.
main 함수가 있는 JustApplication이라는 클래스에 @EnableRedisHttpSession 을 붙인다.
@EnableRedisHttpSession
@SpringBootApplication
public class JustApplication {
public static void main(String[] args) {
SpringApplication.run(JustApplication.class, args);
}
}
Boot 실행시 생성되는 빈값들을 확인해보면
- Redis 설정파일 (RedisHttpSessionConfiguration)
- springSessionRepositoryFilter (spring httpsession을 쓰는 것이 아닌 redis 설정을 통해 custom Repository 생성)
- redisConnectionFactory (spring httpsession과 redis를 연결해주는 bean)
이 생성된다. 그렇다면 Redis설정을 하지 않았을 경우에 진짜 Bean값이 생성이 되지 않는 것일까?
한번 redis설정 및 @EnableRedisHttpSession을 제거해보자.
@EnableRedisHttpSession 이나 application.yml에 redis 설정을 하지 않았을 때는
redisConnectionFactory와 springSessionRepositoryFilter가 생성되지 않는다.
간단하게 HttpSession을 주입받아 session값을 생성하고 조회하는 코드를 짜보면
@RestController
public class JustController {
@Autowired
HttpSession httpSession;
@GetMapping(path = "/setsession")
public String setsessionAPI(){
Random random = new Random();
int num = random.nextInt();
httpSession.setAttribute("KEY",num);
String returnValue = LocalDateTime.now().toString() +
" \nsession set id : "+ httpSession.getId() +
" \nsession set Value : " + num;
return returnValue;
}
@GetMapping(path = "/getsession")
public String getsessionAPI(){
Random random = new Random();
int num = (int) httpSession.getAttribute("KEY");
String returnValue = LocalDateTime.now().toString() +
" \nsession get id : "+ httpSession.getId() +
" \nsession get value " + num;
return returnValue;
}
}
당연히
redis에서 조회결과가 (empty list or set)가 나오게 되며 다음 4번째 글에서는 redis 설정을 다시 진행해보고
setsession / getsession 그리고 redis-cli.exe. 를 통해 Spring Boot에서 redis에 세션값을 저장하는지 확인해보자.
'개발 지식 > Spring Framework' 카테고리의 다른 글
[thymeleaf] 기본 기능 정리 - 01 (0) | 2021.12.16 |
---|---|
[JWT] Spring Boot 환경에서 JWT(Json Web Token)생성 하기 (0) | 2021.10.26 |
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 04 (0) | 2021.09.26 |
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 (0) | 2021.09.23 |
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 (0) | 2021.09.22 |
댓글