SpringBoot项目中可否在其他模块复用自定义WebMvcConfigurer实例
结论
完全可以将这套拦截器配置打包成公共依赖直接复用,不需要在每个业务模块单独重写逻辑,只需要做少量适配调整即可。
具体操作步骤
- 第一步:公共模块打包准备
确保LoggerInterceptor已经添加@Component注解被Spring托管,和InterceptorConfig一起放到公共模块的com.gem.common.interceptors包下,将公共模块打包成jar包。 - 第二步:业务模块适配(二选一即可)
- 方案1(简单适配):在业务模块启动类的
@SpringBootApplication注解中扩展扫描范围,把公共配置所在的包加入扫描路径:@SpringBootApplication(scanBasePackages = {"你的业务模块根包路径", "com.gem.common.interceptors"}) public class YourBusinessApplication { public static void main(String[] args) { SpringApplication.run(YourBusinessApplication.class, args); } } - 方案2(零侵入适配,推荐):用Spring Boot自动装配机制,不需要业务模块改启动类配置:
- 在公共模块的
resources目录下新建层级目录META-INF/spring - 新建文件
org.springframework.boot.autoconfigure.AutoConfiguration.imports,在文件中写入配置类的全限定名:com.gem.common.interceptors.InterceptorConfig - 业务模块引入公共依赖后会自动加载拦截器配置,无需额外修改。
- 在公共模块的
- 方案1(简单适配):在业务模块启动类的
注:如果使用Spring Boot 2.7以下版本,自动装配需要在公共模块
resources/META-INF/spring.factories文件中添加如下配置:org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.gem.common.interceptors.InterceptorConfig
可选优化
如果需要不同业务模块自定义拦截规则(比如自定义拦截路径、排除静态资源/登录接口等),可以在公共模块新增配置属性类,绑定配置文件参数,这样不同模块可以直接在application.yml中调整规则,不需要修改公共代码。
内容的提问来源于stack exchange,提问作者user4740600
相关产品推荐
相关产品推荐

