springboot启动忽略某些类

这篇具有很好参考价值的文章主要介绍了springboot启动忽略某些类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

描述

目前我这的开发环境和测试环境数据库是两份,但是其他如kafkarediseureka等等之类的,都是公用的。
这就会产生一个问题,我想本地跑单元测试,但是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扫描到了还是一样。。于是,全局搜索,果然找到了

后续处理

一些指定扫描路径不冲突的可以忽略,像SpringfoxWebMvcConfigurationSwaggerCommonConfiguration之类的。我这找到两个关联性的,一个是启动类上的包路径扫描,另一个是基础单元测试jar包上写死的路径扫描。
交集,所以我得把扫描的汇总起来。单元测试的基本废弃没用了,直接把它排除了吧,如果要用的话只能通过复制类改扫描范围了。启动类的话,我的处理方案是转移到后面新拉的配置类上。

改之前

springboot启动忽略某些类,技巧,研究,奇奇怪怪的问题,spring boot,后端,java
springboot启动忽略某些类,技巧,研究,奇奇怪怪的问题,spring boot,后端,java

改之后

springboot启动忽略某些类,技巧,研究,奇奇怪怪的问题,spring boot,后端,java
springboot启动忽略某些类,技巧,研究,奇奇怪怪的问题,spring boot,后端,java

解释

这里我让启动类扫描指定文件夹,文件夹下只有我定义的配置,然后在从这个配置上读取新的扫描包路径,并且过滤指定类,如此,把所有的扫描都汇总了。至于上面说的排除类,在配置一个过滤规则就好了,我就不写了。本地没用依赖那个jar包。。

总结

这种方案的完美解决了第一个的缺点:
1、操作简单,不用在每个消费者身上都改代码,我的理解是功能聚合了。
2、不会出现事故,你第一次修改验证通过之后,后面可以修改.gitignore文件,把这个类排除掉,这样就不存在误提交了。

注意,有个小坑哈,记得这个配置类别和你要排除的类放一起,不然启动类的路径还是能扫描到的。。。我这里特地拉出一个单独的目录给它

拆分环境

一种方案是还是公用资源,但是走不同路径,比如配置化用不同的topic。单服务还好,多服务得一起改。而且得看情况,像我这难得搞一次单元测试兴师动众有点过分了

感触

1、封装基础包的时候,最好限定好范围。只处理能处理的,越精确越好。
2、基础包代码最好也有git地址,可追溯修改。我这基础包真就一个包了,没法改。。
3、有可能的话,各个环境隔离
4、如果有其他好的方案,欢迎评论哈。

解决实现demo

参考实现

参考

componentscan-excludefilters-not-working-in-spring-4-0-6-release文章来源地址https://www.toymoban.com/news/detail-647688.html

到了这里,关于springboot启动忽略某些类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sourcetree软件中添加git的.gitignore文件忽略某些文件提交

    有时候我们本地的一些文件修改或变动不需要提交到远程git仓库,那么就可以设置提交时忽略这些文件,比如application.properties文件、log和.history文件夹下的文件等。在Sourcetree软件中的操作步骤如下: 在未暂存文件区域,选择文件右键,然后选“忽略”一项,弹出忽略窗口 在

    2024年02月13日
    浏览(59)
  • java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

    目录 一、使用场景 二、环境准备 1、引入依赖 2、实体类 三、示例 1、不返回空值 (1)方式 (2)测试 (3)说明 2、不返回部分属性 (1)方式 (2)测试 四、 Jackson常用注解 1、 @JsonProperty 2、@JsonPropertyOrder 3、@JsonInclude 4、@JsonIgnoreProperties 5、@JsonFormat 6、@JsonUnwrapped         在开发过程

    2024年02月04日
    浏览(48)
  • SpringBoot开发小技巧使用(DEBUG、启动图标修改、Lombok、devtools、Spring Initializr)

    在resources/application.properties中添加如下,开启DEBUG功能: 然后启动springboot应用,就可以看到DEBUG的日志。Positive表示生效,Negative表示不生效。如下所示: 下载百度的logo到resouces目录下,然后在resources/application.properties添加如下内容: 最后启动springboot应用。打印的日志如下,

    2024年02月15日
    浏览(42)
  • 【前端技巧】ESLint忽略检查行和文件

    @Author:Outman @Date:2023-03-10 一、注释方式 1.注释忽略 —— 块注释 2.注释忽略 —— 忽略指定规则项 3.注释忽略 —— 忽略整个文件 4.注释忽略 —— 忽略整个文件中指定规则项 5.注释忽略 —— 忽略当前行 6.注释忽略 —— 忽略当前行中指定规则项(多个规则项用逗号隔开)

    2024年02月16日
    浏览(44)
  • springboot排除某些自动配置

    目录 前言 使用@SpringBootApplicationexclude时候 使用@EnableAutoConfiguration注解时  在配置文件中指定参数spring.autoconfigure.exclude 进行排除 前言 Spring Boot 提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用

    2024年02月13日
    浏览(30)
  • 你的设备遇到问题,需要重启;我们只收集某些错误信息,然后为你重新启动。

    VMware安装centos和打开其他虚拟机时电脑蓝屏报错: 你的设备遇到问题,需要重启;我们只收集某些错误信息,然后为你重新启动。 我的解决办法:开启Windows的虚拟机平台 打开控制面板,点击“程序”,点击“启用或关闭windows功能”,勾选“虚拟机平台”

    2024年02月11日
    浏览(220)
  • SpringBoot - MyBatis-Plus - 如何在查询时排除某些字段?

    写在前面 查询时部分字段不想给前端显示,怎么办? (1)使用SELECT方法,排除字段\\\"password\\\" (2)使用SELECT方法,只显示某些字段 (3)使用@TableField(exist = false),排除某些字段 注:表示当前属性不是数据库的字段,但在项目中必须使用,这样的话在新增/查询等使用BEAN时,

    2024年02月12日
    浏览(43)
  • 【问题】本地计算机上的MySQL服务启动后停止。某些服务在未有其他服务或程序使用时将自动停止。

    在服务中启动数据库时,发生如上错误。借鉴网友的经验。 !!数据会全部消失, 操作之前一定保存好数据 😭 1.将data文件夹内的内容全部删除,在bin文件夹下打开命令行,输入mysqld --initialize。 2.等待一段时间后输入net start mysql重新启动该服务 但发生如下错误。无法重新启

    2024年02月11日
    浏览(45)
  • 启动MySQL服务时出现"mysql本地计算机上的MySQL服务启动后停止。某些在未由其他服务或程序使用时将自动停止"的问题解决

    某一天我的MySQL启动突然出现了异常:“mysql本地计算机上的MySQL服务启动后停止。某些在未由其他服务或程序使用时将自动停止。” ,小编在网络上面找了很多方法,MySQL启动成功了,但是第二天开启MySQL时还是出现了这个问题,现把两种方法总结一下: 第一个方法: 1.找到

    2024年02月04日
    浏览(55)
  • 解决“本地计算机上的 mysql 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止”

    在一次修改配置文件时重启数据库报错 之前都能正常重启,改了my.ini之后就重启报错 在重启之前增加了这个 注释掉之后就可以正常重启了。这个办法因人而异。 1、先打开数据库根目录,将data文件夹下的文件备份。 2、清空data文件夹中的文件,保留data文件夹。 3、初始化数

    2023年04月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包