package kr.wisestone.owl.config;
|
|
import kr.wisestone.owl.config.websocket.RedisSubscriber;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.listener.ChannelTopic;
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
import org.springframework.security.web.session.HttpSessionEventPublisher;
|
import org.springframework.session.data.redis.config.ConfigureRedisAction;
|
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
|
import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;
|
|
/**
|
* Created by jeong on 2019-02-28.
|
*/
|
@Configuration
|
@EnableRedisHttpSession
|
public class SessionConfiguration extends AbstractHttpSessionApplicationInitializer {
|
@Value("${redis.host}")
|
private String redisHost;
|
|
@Value("${redis.port}")
|
private int redisPort;
|
|
@Value("${redis.common.topic}")
|
private String redisCommonTopic;
|
|
@Bean
|
public RedisConnectionFactory redisConnectionFactory() {
|
return new LettuceConnectionFactory(this.redisHost, this.redisPort);
|
}
|
|
@Bean
|
public HttpSessionEventPublisher httpSessionEventPublisher() {
|
return new HttpSessionEventPublisher();
|
}
|
|
@Bean
|
public ConfigureRedisAction configureRedisAction() {
|
return ConfigureRedisAction.NO_OP;
|
}
|
|
@Bean
|
public RedisSubscriber redisSubscriber() {
|
return new RedisSubscriber();
|
}
|
|
@Bean
|
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
|
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
|
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
|
redisMessageListenerContainer.addMessageListener(this.redisSubscriber(), new ChannelTopic(this.redisCommonTopic));
|
return redisMessageListenerContainer;
|
}
|
|
@Bean
|
public StringRedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
|
stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
|
stringRedisTemplate.setKeySerializer(new StringRedisSerializer());
|
stringRedisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(String.class));
|
return stringRedisTemplate;
|
}
|
}
|