问题描述
现在项目就是user-service模块引用common包
common包包括拦截器,专门拦截网关转发到user微服务去拦截获取userId
原因分析
这个注册拦截器配置类默认是不会生效的,因为它所在的包是com.gjs.common.config
,与其它微服务的扫描包不一致,无法被扫描到,因此无法生效。
解决方法
基于SpringBoot的自动装配原理,我们要将其添加到resources
目录下的META-INF/spring.factories
文件中:
内容如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.gjs.common.config.MvcConfig
测试能获取到userId
但是我的common包还包括全局异常拦截
我给spring.factories,添加拦截全局异常类。但是没效果
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.gjs.common.config.MvcConfig,\
com.gjs.common.interceptor.GlobalExceptionHandler
可能因为这个全局异常捕捉类不是配置类,并不需自动装配。
所以我又用了另个方法,在user启动类添加基础包扫描路径扩大到com.gjs
有叶子的表示表示被spring管理了
测试成功,能获取userId并且异常全局捕捉生效了