添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1.

背景​ 在有些时候,不同环境可能需要用代码不同模块的能力,但是不同环境的项目包是一致的。这块我们想到的最简单的办法是在maven打包的时候打不同的模块,但是这样往往需要出多个包,虽然这种方式是正路但运维同学嫌麻烦。第二种方式是在spring扫包时候排除指定的排除的类或者模块,针对模块来说则需要自己实现,作者经过测试发现这种方式存在很大的问题,网上大面积是这种解决方案,基本都是乱抄。第三种方式则是采用spring的后置处理器实现。下边作者把这几种方式的实现大概写下。

2.

maven打包方式 mvn package a b c 这种方式通过传不同的abc进行出包,但不是我们想要的方式。

3.

使用@ConponentScan注解 现在一般项目都用Springboot开发,直接用@SpringBootApplication即可,该注解提供了baseScan的路劲配置能力,但是在exclude掉不想要的模块时就显得力不从心。我们打开@SprinbootApplication注解时发现其为三个注解的整合,其参数basescan**本质就是@ConponentScan注解,但是@SpringBootApplication无法定制化exclude能力,所以我们将@SpringBootApplication里的三个注解提炼出来,替代@SpringbootApplication 然后改造如下: @SpringBootConfiguration @EnableAutoConfiguration@ComponentScan(includeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class)) public static void main(string[] args){ Springbootapplication.run(a.class); } 注意这块作者是直接用手机写的,全凭记忆,把大概过程记录一下。

参考来源:

查看更多

CSDN博客
提供内容
有用
分享

springboot排除扫描包 - 资深开发工程师答疑 - 百度问一问

在线
2154位电子数码答主在线答
已服务超1.5亿人 5分钟内回复