SpringBoot @EnableAutoConfiguration exclude属性失效
在学习SpringBoot的时候,入了不少的坑。今天学习@SpringBootApplication里面的@EnableAutoConfiguration注解的exclude属性的,加载配置中,发现了属性失效的case
病状:exclude属性不起作用,如下:
根治:首先我们要知道exclude这个属性的使用说明,说明exclude就是说一下这个@EnableAutoConfiguration这个注解了
我们都知道这个注解(@EnableAutoConfiguration)是自动装配我们容器中的bean实例的,他会从你的< classpath >下的类中自动生成一些bean,并且加载到context中.
看重点了,他加载的是classpath下的Bean.我么看一下springboot的源码
看到SpringFactoriesLoader这个类会加载classpath下面的META-INF/spring.factories文件下面的所配置的所有bean
因为SpringBoot是一个全能框架,所以他的扩展方面也是很强的。我们使用springboot的时候必然是用maven.那么如果项目要引用第三方配置,或者classpath的配置。我么通过spring.factories文件就可以实现。下面是一个小case
两个maven项目springboot 是主要的项目。我们springboot这个项目引用dev这个项目里面的某个配置的时候。就需要将两个项目做关联。我们可以在springboot这个项目里面加入dev这个项目的maven坐标,如下:
boot里面引用dev的坐标之后两个项目就有所关联了,现在我们引用dev里面的配置。有两种结果
第一种:如果你的启动类和你引用的配置类在一个包底(包名一样或者在包的子包下)下,那么直接获取是没问题的因为有@ComponentScan这个注解
第二种:就是没在一个包下,@ComponentScan这个注解也没有扫描那个包。我们就可以通过spring.factory来配置。比如在dev这个项目中:如下:
内容是下面的这个截图同样是KEY-VALUE形式的
这里的名字不能更改的,不然不起作用,通过这样配置然后再在springboot中引用dev的配置就可以了。到这里应该就知道为什么exclude这个属性不生效了,因为他们没有在同一个包下面@ComponentScan这个注解做了自动扫描没有扫描到这里面的bean
加载spring.factories文件返回一个spring[]的数组会全部注入到spring ioc容器中。所以exclude这个属性是控制的spring.factories这个文件里面的注入ioc容器的bean...
完()
SpringBoot @EnableAutoConfiguration exclude属性失效的更多相关文章
- springBoot @EnableAutoConfiguration深入分析
1.新建一个项目中需要提供配置类 2.在META-INF/spring.factorties在文件中配置 org.springframework.boot.autoconfigure.EnableAu ...
- iOS scrollsToTop属性失效
点击状态栏返回顶部失效,是因为scrollView的scrollsToTop属性失效 (继承于scrollView的tableView collectionView也算). 这个属性默认是开启的,然而 ...
- 解决IE8下opacity属性失效问题,无法隐藏元素
解决IE8下opacity属性失效问题 由于opacity属性存在兼容性问题,所以在IE8下,用opacity来设置元素的透明度,会失效,从而导致页面的样式问题.在IE8及其更早的浏览器下,我们可 ...
- javascript私有属性失效及解决方案
1.js创建私有属性的方法 在 javascript 中所有对象的成员是公有的 构造函数也是如此: function Gadget ( ) { this.name = ' jack '; this.p ...
- spring boot EnableAutoConfiguration exclude 无效
本文链接:https://blog.csdn.net/ID19870510/article/details/79373386 首先讲一下SpringBootApplication注解源码定义为 @Ta ...
- springboot 配置文件中属性变量引用方式@@解析
这种属性应用方式是field_name=@field_value@. 两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用. @@ ...
- @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@EnableAutoConfiguration 作用:Spring Boot会自动根据你jar包的依赖来自动配置项目. 例如当你项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存 ...
- springboot EnableAutoConfiguration
http://blog.javachen.com/2016/02/19/spring-boot-auto-configuration.html 自动配置 在启动类上使用@EnableAutoConfi ...
- springBoot配置分析(属性和结构化)
使用idea自带插件创建项目 一直下一步到完成 application.properties local.ip.addr = 192.168.2.110 redis.host = 192.168.3. ...
随机推荐
- MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog
innodb_flush_log_at_trx_commit 主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0.1.2三个.该参数控制重做日志写入 ...
- JAVA concurrent包下Semaphore、CountDownLatch等用法
CountDownLatch 跟join的区别 CountDownLatch用处跟join很像,但是CountDownLatch更加灵活,如果子线程有多个阶段a.b.c; 那么我们可以实现在a阶段完成 ...
- Linux上搭建SVN服务
环境:centos7 一.搭建svn服务 1. 安装svn yum -y install subversion 2. 创建一个目录作为svn服务的地址(svn://192.168.0.2:3690 访 ...
- Go Programming Language
[Go Programming Language] 1.go run %filename 可以直接编译并运行一个文件,期间不会产生临时文件.例如 main.go. go run main.go 2.P ...
- 团队项目-Beta冲刺及发布说明
请大家在每次作业开头添加格式描述: 这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 <写上团队名称>(附上团队博客链接) 这 ...
- Cutting Bamboos(2019年牛客多校第九场H题+二分+主席树)
题目链接 传送门 题意 有\(n\)棵竹子,然后有\(q\)次操作,每次操作给你\(l,r,x,y\),表示对\([l,r]\)区间的竹子砍\(y\)次,每次砍伐的长度和相等(自己定砍伐的高度\(le ...
- 03-C#笔记-数据类型
--- # 1 数据类型 --- ## 1 和C++不同的数据类型: byte: 8位,0~255 decimal:范围大于double,128位 sbyte: 8位,-128~127 uint 32 ...
- RabbitMQ六种队列模式-简单队列模式
前言 RabbitMQ六种队列模式-简单队列 [本文]RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主 ...
- Pandas | 12 选项和自定义
Pandas提供API来自定义其行为的某些方面,大多使用来显示. API由五个相关函数组成.它们分别是: get_option() set_option() reset_option() descri ...
- NetworkManager需要与不需要
需要: 1.nmcli配置网络 不需要: 1. ifcfg-eth1:0(网卡的子接口配置文件)生效