1. 필수 defendency

 <dependency>
 	<groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
       
 <!-- redis -->
 <dependency>
   <groupId>org.springframework.session</groupId>
   <artifactId>spring-session-data-redis</artifactId>
 </dependency>

2. configuration

@Configuration
public class RedisConfig {
    
    @Value("${spring.redis.host}")
    private String host;
    
    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.database}")
    private int database;
	
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setPassword(password);
        redisStandaloneConfiguration.setDatabase(database);
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        return lettuceConnectionFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(redisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        /**
         * 2017-11-15 (고병만)수정
         * 필수처리 key StringRedisSerializer 처리를 해줘야 key앞에 이상한 특수 문자들이 임의로 붙는 상황을
         * 막을 수 있음 ex)\xAC\xED\x00\x05t\x00\x12
         */
        template.setKeySerializer(new StringRedisSerializer());
        return template;
    }
}

 

3. spring에서session 사용방법 다음만 지키자

아래의 코드처럼 session에서 데이터를 가져와서 데이터 가공작업 후 -> 다른 페이지로 redirect하는 상황이 발생한다면

반드시 데이터 가공후 session.setAttribute 해줘야함

당연한거라 생각 할 수 있지만. 일반httpsession같은경우 setAttribute 하지 않더라도 데이터가 유지됩.

 

SinJepmSSVO ss_sinJepmSSVO = request.getSession().getAttribute("ss_sinJepmSSVO") != null ? (SinJepmSSVO) request.getSession().getAttribute("ss_sinJepmSSVO") : null;
        List<CycleDataCompareVO> cycleDataCompareVOS = jmngService.compare_cycle(ss_sinJepmSSVO,sinJepmSSVO);
 //session save
  request.getSession().setAttribute("ss_cycleDataCompareVOS",cycleDataCompareVOS);

 

4. 반드시 vo , dto 등 session에 담을 데이터는 implements Serializable 해야함.

@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Builder
public class TermVO implements Serializable {
    //년도
    private String year;

    //텀
    private String term;

    //텀 - 시작일자
    private String stdate;
    //텀 - 종료일자
    private String eddate;

    //텀코드
    private String termcode;

    public String getTermcode() {
        return year + "-" + (Integer.parseInt(term) < 10 ? "0"+term : term);
    }
}

 

5. redist는 프로젝트 초기에 세팅해서 작업을 하는게 좋을듯 . 중간에 끼어넣으려니 그동안 작업했던 vo , session 처리하는 부분들 변경해줘야 되는 귀찮은 일들이 생김.

 

반응형
블로그 이미지

visualp

c#, java

,