wordpress 4.9更新,河北seo公司,互联网营销概念,商城网站开发公司springboot启动忽略某些类 描述解决方案单拉一个提交#xff0c;把所有的涉及kafka消费的都不注入容器通过配置ComponentScan的excludeFilters配置了不生效后续处理改之前改之后解释 总结 拆分环境 感触解决实现demo参考 描述 目前我这的开发环境和测试环境数据库是两份#… springboot启动忽略某些类 描述解决方案单拉一个提交把所有的涉及kafka消费的都不注入容器通过配置ComponentScan的excludeFilters配置了不生效后续处理改之前改之后解释 总结 拆分环境 感触解决实现demo参考 描述 目前我这的开发环境和测试环境数据库是两份但是其他如kafka、redis、eureka等等之类的都是公用的。 这就会产生一个问题我想本地跑单元测试但是kafka消费到了测试环境的数据然后异常重试又发送了延迟队列(我这里的延迟队列是基于kafka实现的)然后被测试环境消费了然后报警群里狂刷测试环境告警。 解决方案
单拉一个提交把所有的涉及kafka消费的都不注入容器 这个存在一些问题 1、第一次工作量有点大我这项目有近20个消费点的手有点累 2、自测的时候得convert这个提交好了之后再convert麻烦而且容易忘忘了就是事故。。 通过配置ComponentScan的excludeFilters
配置了不生效
Configuration
ComponentScan(
excludeFilters {ComponentScan.Filter(type FilterType.REGEX, pattern {[.a-zA-Z]InjectService})
})
public class DevConfig {}如上单独拉了一个配置类指定了正则过滤配置了正则表达式然后它没起作用。报警群又刷了一遍。。 后面查了一下资料说是取交集。即使你这里没有让他扫描到其他的ComponentScan扫描到了还是一样。。于是全局搜索果然找到了 后续处理 一些指定扫描路径不冲突的可以忽略像SpringfoxWebMvcConfiguration、SwaggerCommonConfiguration之类的。我这找到两个关联性的一个是启动类上的包路径扫描另一个是基础单元测试jar包上写死的路径扫描。 交集所以我得把扫描的汇总起来。单元测试的基本废弃没用了直接把它排除了吧如果要用的话只能通过复制类改扫描范围了。启动类的话我的处理方案是转移到后面新拉的配置类上。 改之前 改之后 解释 这里我让启动类扫描指定文件夹文件夹下只有我定义的配置然后在从这个配置上读取新的扫描包路径并且过滤指定类如此把所有的扫描都汇总了。至于上面说的排除类在配置一个过滤规则就好了我就不写了。本地没用依赖那个jar包。。 总结 这种方案的完美解决了第一个的缺点 1、操作简单不用在每个消费者身上都改代码我的理解是功能聚合了。 2、不会出现事故你第一次修改验证通过之后后面可以修改.gitignore文件把这个类排除掉这样就不存在误提交了。 注意有个小坑哈记得这个配置类别和你要排除的类放一起不然启动类的路径还是能扫描到的。。。我这里特地拉出一个单独的目录给它 拆分环境 一种方案是还是公用资源但是走不同路径比如配置化用不同的topic。单服务还好多服务得一起改。而且得看情况像我这难得搞一次单元测试兴师动众有点过分了 感触 1、封装基础包的时候最好限定好范围。只处理能处理的越精确越好。 2、基础包代码最好也有git地址可追溯修改。我这基础包真就一个包了没法改。。 3、有可能的话各个环境隔离 4、如果有其他好的方案欢迎评论哈。 解决实现demo
参考实现
参考
componentscan-excludefilters-not-working-in-spring-4-0-6-release