원본 본문으로 이동하기

스프링 부트 레디스 세션 연동

박용서 - 스프링 부트 세션 시리즈 스프링 부트 레디스 세션 연동 https://gs.saro.me/#!m=elec&jn=783 스프링 부트 세션 스코프빈 https://gs.saro.me/#!m=elec&jn=784 스프링 부트 세션 컴포넌트 https://gs.saro.me/#!m=elec&jn=785 서론 이번엔 저번에도 소개한적있는 key-value 데이터베이스 레디스를 스프링세션에 연동하는 강의를 써보도록 하겠습니다. 레디스 소개 - https://gs.saro.me/#!m=pd&pn=21 - https://gs.saro.me/#!m=elec&jn=529 레디스 설치 데비안 계열 (우분투등..) > sudo add-apt-repository ppa:chris-lea/redis-server > sudo apt-get update > sudo apt-get install redis-server > sudo vim /etc/redis/redis.conf - vim 을 예제로.. 적당히 설정을 보고 고쳐줍니다. - 특별히 설정을 하지 않아도 됩니다. -필자도 포트정도만.. 윈도우 https://github.com/MSOpenTech/redis/releases - 다운받아 설치 기타 리눅스/유닉스등.. http://redis.io/download 레디스 데크크탑 매니저 레디스 GUI 관리 툴 입니다. - 설치 : https://redisdesktop.com/ 접속해보시면 db0 부터 db15까지 16개의 데이터베이스가 있습니다. 메이븐 설정 <!-- 스프링 세션 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>1.2.1.RELEASE</version> </dependency> <!-- 스프링 레디스 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> properties 설정 필자는 db관련 프로퍼티는 별도로 저장하기 때문에 application.properties 가 아닌 프로젝트/src/main/resources/database.properties 에 저장하였습니다. #레디스 redis.host: 호스트 redis.port: 포트 redis.database: 데이터베이스번호(위 매니저에서봤던 0~15범위내 숫자[데이터베이스번호]) 세션설정 @Configuration @EnableRedisHttpSession @PropertySource("classpath:database.properties") public class SessionConfig { @Value("${redis.host}") String host; @Value("${redis.port}") int port; @Value("${redis.database}") int database; @Bean public JedisConnectionFactory connectionFactory() { JedisConnectionFactory conn = new JedisConnectionFactory(); conn.setHostName(host); conn.setPort(port); conn.setDatabase(database); conn.setUsePool(true); return conn; } @Bean public CookieSerializer cookieSerializer() { DefaultCookieSerializer serializer = new DefaultCookieSerializer(); // 위 레디스 처럼 serializer 의 각종 설정 가능. // tomcat context 로 설정한 쿠키 기능들도 여기서 설정가능. return serializer; } } 테스트 세션 스코프빈은 다음 강의에서 할 예정이니 HttpSession 을 사용해보겠습니다. @Controller public class UsingSessionTestController { @ResponseBody @RequestMapping(path="/session-test", produces="text/plain") public String sessionTest(HttpSession session) { session.setAttribute("test", "hello"); return (String)session.getAttribute("test"); } } - /session-test 에 접속합니다. - 레디스 매니저로 조회하여봅니다. - 해더 Cookie: 와 일치하는 세션아이디가 보이면 성공! - 스프링 Redis