반응형
상황
Spring-Session-JDBC를 프로젝트에 적용해보자.
우선 fream프로젝트는 Gradle을 사용하고 있으므로, build.gradle파일에 의존성을 선언해주자.
dependencies {
compile 'org.springframework.session:spring-session-jdbc'
}
Spring-Session-JDBC는 Tomcat의 세션이아닌, 자체적인 세션을 사용한다. 이는 필터를 통해서 기존 Tomcat의 세션이 아닌, Spring-Session으로 바꿔준다. 이를 위해 @EnableJdbcHttpSession를 직접 붙여 필터를 생성해야한다. 그러나, 아래의 예시와 같이 session.store-type : jdbc를 선언시 Springboot가 자동으로 생성해준다.
Spring-Session-JDBC는 RDBMS를 세션저장소로 사용한다. 즉 fream 프로젝트에서는 MySQL이 되겠다. application.properties나 yml 파일에 간단히 선언한것만으로 Spring-Session-JDBC가 자동으로 해당 RDMS에 접속, 세션과 세션정보를 저장할수있는 테이블을 생성해준다.
session: store-type: jdbc jdbc: initialize-schema: always table-name: SPRING_SESSION
자, 그럼 TalendAPI-Test를 통해 로그인 API를 날려보고, 실제 스프링 세션이 생겼는지 확인해보자.
spring-session에 저장되는 정보는 byte화 되어 저장되는걸 볼수 있다.
이로서 RDBMS를 사용해 세션 저장소로 활용하는데 성공했다!
성과
- 특정 WAS에 의존적이지 않은 세션클러스터링
- 기존RDBMS를 활용한 세션저장소, 추가적인 관리소요 X
- Redis,MongoDB등 Spring-session에서 지원하는 저장소로 변경시 라이브러리만 추가해주면 된다.
References:
https://docs.spring.io/spring-session/reference/guides/java-jdbc.html
https://docs.spring.io/spring-session/reference/guides/boot-jdbc.html
반응형
'프로그래밍' 카테고리의 다른 글
REST API 란? (0) | 2022.06.26 |
---|---|
Spring-Session-JDBC로 클러스터링을 해결하자-1 (0) | 2022.02.15 |