springboot启动的时候排除加载某些bean


一、缘起

由于公司把redis相关的配置类,工具类放在了一个类似common的工程里,这样以后肯定不可避免的出现某些项目可能并不需要使用redis,但是还是依赖common里的别的一些类库

所以排除springboot启动加载的一些bean还是有意义的

二、@ComponenScan注解

@ComponentScan注解用来扫描加排除,不加ComponentScan注解,springboot是默认扫描springboot启动类所在的包及其子包,我们现在自己扫描,然后使用@ComponentScan注解的excludeFilters属性用来排除不想扫描的bean。

我的示例是排除redis相关的配置,光排除自己写的配置类时不行的,还需要排除springboot提供的自动配置类,使用@SpringBootApplication的exclude属性把RedisAutoConfiguration.class排除掉,这个时候启动,结果尴尬了,报错一个组件依赖了redisTemplate这个bean。找了挺久,原来还要把RedisRepositoriesAutoConfiguration去掉

代码如下

@SpringBootApplication(exclude = {RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class}) @EnableEurekaClient @EnableCircuitBreaker @EnableDiscoveryClient @EnableTransactionManagement @ComponentScan(value = "com.aw.phjr", excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedisConfiguration.class, RedisUtil.class})) public class RestRpc_Application {

 

如果想知道配置redis或者其他组件都有哪些自动配置类,可以参考文章:https://www.cnblogs.com/xhy-shine/p/11274906.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM