springboot整合redis,实现session共享
2016-10-29 17:04
1061 查看
一直对serssion的共享有着很大的疑惑,对于我现在的工作的地方,所在的部门,因为没有前台页面,纯属后台。所以,不会存在session的共享问题。但是出于好奇,也是心里的疑惑,今天也动手实验了下。
我用的spring-boot-starter-redis版本是1.3.8.RELEASE,spring-session-data-redis版本是1.2.1.RELEASE,这个jar包主要是为了实现session共享做准备。
添加application.properties文件
添加InitConfig类,读取对应的application.properties
添加WebConfig类,配置springmvc
添加controller
启动两份项目的tomcat,端口分别是8081和8084,访问
http://localhost:8081/admin/v1/sessions
http://localhost:8084/admin/v1/sessions
返回均是
{"sessionId":"894ed7c3-45a6-4437-a539-51a7ba946992","message":null}
至此,通过redis共享session就此结束。很简短。也只是实现了,欢迎大家斧正。
我用的spring-boot-starter-redis版本是1.3.8.RELEASE,spring-session-data-redis版本是1.2.1.RELEASE,这个jar包主要是为了实现session共享做准备。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>${redis.version}</version> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.2.1.RELEASE</version> </dependency>
添加application.properties文件
#tomcat地址 server.port=8084 #redis地址 spring.redis.host=192.168.8.128 spring.redis.port=6379 spring.redis.timeout=20000
添加InitConfig类,读取对应的application.properties
@Configuration @PropertySource({ "classpath:application.properties" }) public class InitConfig { @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer(); propertySourcesPlaceholderConfigurer.setLocations(new ClassPathResource("/application.properties")); return propertySourcesPlaceholderConfigurer; } }
添加WebConfig类,配置springmvc
@Configuration @EnableWebMvc @ComponentScan(basePackages={"com.zd.testdata.web.controller"},useDefaultFilters = false, includeFilters = @ComponentScan.Filter(value = {Controller.class, ControllerAdvice.class})) public class WebConfig extends WebMvcConfigurerAdapter { @Autowired private ObjectMapper objectMapper; @Bean public FilterRegistrationBean characterEncodingFilterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceEncoding(true); registrationBean.setFilter(characterEncodingFilter); registrationBean.addUrlPatterns("/*"); return registrationBean; } @Bean public ServletRegistrationBean mvcDispatcherRegistration() { DispatcherServlet dispatcherServlet = new DispatcherServlet(); AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); dispatcherServlet.setApplicationContext(applicationContext); ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet, "/"); servletRegistrationBean.setName("springMvc"); return servletRegistrationBean; } protected MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); jsonConverter.setObjectMapper(objectMapper); return jsonConverter; } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(customJackson2HttpMessageConverter()); converters.add(new StringHttpMessageConverter()); } @Override public void addFormatters(FormatterRegistry registry) { super.addFormatters(registry); DateFormatter dateFormatter = new DateFormatter("yyyy-MM-dd HH:mm:ss"); dateFormatter.setLenient(true); registry.addFormatter(dateFormatter); } }
添加controller
@RestController @RequestMapping(value = "/admin/v1") public class RedisController { @RequestMapping(value = "/first", method = RequestMethod.GET) public Map<String, Object> firstResp (HttpServletRequest request){ Map<String, Object> map = new HashMap<String,Object>(); request.getSession().setAttribute("request Url", request.getRequestURL()); map.put("request Url", request.getRequestURL()); return map; } @RequestMapping(value = "/sessions", method = RequestMethod.GET) public Object sessions (HttpServletRequest request){ Map<String, Object> map = new HashMap<String,Object>(); map.put("sessionId", request.getSession().getId()); map.put("message", request.getSession().getAttribute("map")); return map; } }
启动两份项目的tomcat,端口分别是8081和8084,访问
http://localhost:8081/admin/v1/sessions
http://localhost:8084/admin/v1/sessions
返回均是
{"sessionId":"894ed7c3-45a6-4437-a539-51a7ba946992","message":null}
至此,通过redis共享session就此结束。很简短。也只是实现了,欢迎大家斧正。
相关文章推荐
- spring boot + redis 实现session共享
- spring boot整合redis实现shiro的分布式session共享的方法
- spring boot--整合spring session实现session共享以及cookie丢失问题解决
- spring boot + redis 实现session共享
- SpringBoot+Redis+Nginx实现负载均衡以及Session缓存共享
- Spring Boot系列(七)Spring Boot使用Redis实现session共享
- springboot 集成redis实现session共享
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- Spring整合redis(jedis)实现Session共享的过程
- spring boot + redis 实现session共享
- spring-session整合redis实现session共享
- 使用springboot+redis实现session共享
- spring boot + redis 实现session共享
- spring boot + redis 实现session共享
- SpringBoot+redis 实现shiro集群,共享session。亲测可用
- 使用springboot+redis实现session共享
- Spring Boot高级教程之使用Redis实现session共享
- 使用springboot+redis实现session共享