踩坑日志1----从zuulFilter到Filter
踩坑缘起:
项目里面一直在线程的上下文里面放着一些用户的信息,之前测试的时候直接放在了接口的最前面,这次有时间把中间的逻辑终于捋清楚了,涉及到了SpringCloud的zuul以及filter,把这中间用到的东西自己做了一下,发现是一步一坑,所以在此总结,避免以后入坑,同时如果对路过的各路豪杰有所帮助更好不过了。
第一坑之gateway和web依赖
如果你的网关是用gateway来做的,你依赖里面又有了zuul,比如:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
你会发现下面这个问题:
Description:
Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' in your configuration.
当时你肯定回去百度,会发现肯定是依赖的问题,大多数都是说有web依赖,这就很懵圈了,web依赖在哪里。
后来通过查找发现spring-cloud-starter-netflix-zuul里面有web依赖
所以只用zuul的依赖即可
第二坑之zuulFilter和Filter
想做到的效果是写自己的filter继承zuulFilter实现把一些参数放到RequestContext里面,在Filter的HttpServletRequest里面再把参数取出来。
一开始的时候是把zuulFilter和Filter写到了网关这个服务里面,最后发现根本从HttpServletRequest里面获取不到东西,最后找资料,一位仁兄有做提醒,方此出坑
zuulFilter里面放的东西需要在其他服务里面定义Filter来处理请求
第三坑之Filter
本想着八百公里的莫贺延碛就要过去了,结果又眼睁睁的调进一个坑里,为啥过滤器的代码不执行。
经查资料发现@ServletComponentScan注解忘写了,这就写上呗,以为马上出坑。运行一看,What?
还是一样,又经过一番苦苦寻找,发现注解里面的basePackages忘记配置了。配置完成以后,运行代码,终于难产变顺产。
跳出了大坑,呼吸到了新鲜空气。
欢迎一起入坑,出坑。蹲坑也行