springboot2整合spring-session-data-redis,實現session共享
阿新 • • 發佈:2018-11-03
1.新增Maven依賴
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
2.自定義RedisConfig
@Configuration public class RedisConfig extends CachingConfigurerSupport { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.timeout}") private int timeout; @Bean public JedisPool redisPoolFactory() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); return new JedisPool(jedisPoolConfig, host, port, timeout, password); } @Bean(name = "redisTemplate") public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, Visibility.ANY); objectMapper.enableDefaultTyping(DefaultTyping.NON_FINAL); Jackson2JsonRedisSerializer<Object> jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); jsonRedisSerializer.setObjectMapper(objectMapper); redisTemplate.setDefaultSerializer(jsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.afterPropertiesSet(); return redisTemplate; } } application.properties關於Redis配置 spring.redis.host=182.92.234.232 spring.redis.port=6379 spring.redis.password= spring.redis.timeout=2000
3.自定義RedisSessionConfig
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 300)
public class RedisSessionConfig {
}
4.定義測試Controller
@RestController public class TestController { @RequestMapping(value = "/sessionInfo", method = RequestMethod.GET) public Map<String, String> addSession (HttpServletRequest request){ String sessionId = request.getSession().getId(); String requestURI = request.getRequestURI(); Map<String, String> sessionInfoMap = new HashMap<>(2); sessionInfoMap.put("sessionId", sessionId); sessionInfoMap.put("requestURI", requestURI); return sessionInfoMap; } }
5.測試
開啟2臺tomcat(域名要相同 埠可以不同),同一個瀏覽器session共享 具體可以看sessionId值
原始碼 https://gitee.com/jsjack_wang/springboot-demo dev-redis-session分支