spring boot

一、Spring Boot 进行跨域请求

 1 package com.atguigu.gulimall.gateway.config;
 2  
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.Configuration;
 5 import org.springframework.web.cors.CorsConfiguration;
 6 import org.springframework.web.cors.reactive.CorsConfigurationSource;
 7 import org.springframework.web.cors.reactive.CorsWebFilter;
 8 import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
 9 import org.springframework.web.server.ServerWebExchange;
10  
11 @Configuration
12 public class GulimallCorsConfiguration {
13  
14     @Bean
15     public CorsWebFilter corsWebFilter(){
16         UrlBasedCorsConfigurationSource  source=new UrlBasedCorsConfigurationSource();
17         CorsConfiguration cc=new CorsConfiguration();
18         cc.addAllowedOrigin("*");
19         cc.addAllowedMethod("*");
20         cc.addAllowedHeader("*");
21         cc.setAllowCredentials(true);//跨域请求默认不包含cookie,设置为true可以包含
22         source.registerCorsConfiguration("/**",cc);
23         CorsWebFilter corsWebFilter = new CorsWebFilter(source);
24         return corsWebFilter 
; 25  } 26 }

二、SpringSession  to  Spring Boot

1、1依赖

<!--springsession整合redis-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>

1、2文档

1、3配置

spring.session.store-type=redis #session保存类型
server.servlet.session.timeout= #过期时间
spring.session.redis.flush-mode=on_save # Sessions flush mode.
spring.session.redis.namespace=spring:session # Namespace for keys used to store sessions.

1、4配置redis

spring.redis.host=localhost # Redis server host.
spring.redis.password= # Login password of the redis server.
spring.redis.port=6379 # Redis server port.

1、5JSON序列化

 

 

1、6最终自定义配置

 1 @Configuration
 2 public class XmallSessionConfig {
 3     @Bean
 4     public CookieSerializer cookieSerializer() {
 5         DefaultCookieSerializer serializer = new DefaultCookieSerializer();
 6         serializer.setCookieName("JSESSIONID");
 7         serializer.setDomainName("gulimall.com");
 8         return serializer;
 9     }
10     @Bean
11     public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
12         return new GenericJackson2JsonRedisSerializer();
13     }
14 }

1、7核心原理

  1)、@EnableRedisHttpSession导入RedisHttpSessionConfiguration配置

    1、给容器中台添加了一个组件

      SessionRepository=》【RedisOperationsSessionRepository】=》redis 操作session。

     2、SessionRepositoryFilter=》Filter:session'存储过滤器;每个请求过来都必须经过filter'

      1、创建的时候,就自动从容器中获取l了SessionRepository;

      2、原始的request,response都被包装。SessionRepositoryRequestWrapper,SessionRepositoryResponseWrapper

      3、以后获取session。request.getSession();

      4、wrappedRequest.getSession();=》SessionRepository 中获取到的

装饰者模式;

自动延期:redis中的数据也是有过期时间的

三、feign请求中请求头得丢失

四、线程池丢失先前请求(RequestContextHolder






posted @ 2021-05-29 16:54  ffzzblog  阅读(73)  评论(0编辑  收藏  举报