Spring Boot 2.0.0.RELEASE版本已经发布,喜欢尝鲜的幻幻马上试了一下。
一、升级pom文件
Spring Session的版本也升级到了2.0.2.RELEASE
org.springframework.session spring-session-data-redis 2.0.2.RELEASE
二、配置
1.Spring Session的配置
不同于上一个版本,2.0版本的配置都放在配置文件里了;内部对redis的支持,从jedis换到了Lettuce。
# Srping Session spring.session.store-type=redis # Session timeout in seconds. server.session.timeout=7200 # Sessions flush mode. spring.session.redis.flush-mode= # Namespace for keys used to store sessions. spring.session.redis.namespace=
2.redis配置
#redis spring.redis.database=0 # Redis服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接密码(默认为空) spring.redis.password= # Redis服务器连接端口 spring.redis.port=6379 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1 spring.redis.lettuce.shutdown-timeout=100 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.min-idle=0
三、修改代码
原本,我们Jedis的配置是这样的:最简单的Spring Cloud配置Redis方法
现在变成了
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession; /** * @author 幻幻Fate * @create 2018/03/14 * @since */ @EnableSpringHttpSession public class HttpSessionConfig { @Bean @ConfigurationProperties(prefix = "spring.redis")//官网上没有这一行,但不加会找不到配置信息,可能是官网redis的配置项的key也变更了,后续如果找到了再更新 public LettuceConnectionFactory connectionFactory() { return new LettuceConnectionFactory(); } //这是RestfulApi项目用的 // @Bean // public HttpSessionIdResolver httpSessionIdResolver() { // return HeaderHttpSessionIdResolver.xAuthToken(); // } }
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; /** * @author 幻幻Fate * @create 2018/03/14 * @since */ @Configuration @EnableCaching public class RedisConfig { private static final Logger LOG = LoggerFactory.getLogger(RedisConfig.class); @Autowired private LettuceConnectionFactory lettuceConnectionFactory; @Bean @Primary public RedisTemplate redisTemplate() { StringRedisTemplate template = new StringRedisTemplate(lettuceConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } }