在学习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属性失效的更多相关文章

  1. springBoot @EnableAutoConfiguration深入分析

    1.新建一个项目中需要提供配置类 2.在META-INF/spring.factorties在文件中配置 org.springframework.boot.autoconfigure.EnableAu ...

  2. iOS scrollsToTop属性失效

    点击状态栏返回顶部失效,是因为scrollView的scrollsToTop属性失效 (继承于scrollView的tableView collectionView也算). 这个属性默认是开启的,然而 ...

  3. 解决IE8下opacity属性失效问题,无法隐藏元素

    解决IE8下opacity属性失效问题   由于opacity属性存在兼容性问题,所以在IE8下,用opacity来设置元素的透明度,会失效,从而导致页面的样式问题.在IE8及其更早的浏览器下,我们可 ...

  4. javascript私有属性失效及解决方案

    1.js创建私有属性的方法 在 javascript 中所有对象的成员是公有的 构造函数也是如此: function Gadget ( ) { this.name = ' jack '; this.p ...

  5. spring boot EnableAutoConfiguration exclude 无效

    本文链接:https://blog.csdn.net/ID19870510/article/details/79373386 首先讲一下SpringBootApplication注解源码定义为 @Ta ...

  6. springboot 配置文件中属性变量引用方式@@解析

    这种属性应用方式是field_name=@field_value@. 两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用. @@ ...

  7. @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

    @EnableAutoConfiguration 作用:Spring Boot会自动根据你jar包的依赖来自动配置项目. 例如当你项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存 ...

  8. springboot EnableAutoConfiguration

    http://blog.javachen.com/2016/02/19/spring-boot-auto-configuration.html 自动配置 在启动类上使用@EnableAutoConfi ...

  9. springBoot配置分析(属性和结构化)

    使用idea自带插件创建项目 一直下一步到完成 application.properties local.ip.addr = 192.168.2.110 redis.host = 192.168.3. ...

随机推荐

  1. MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog

    innodb_flush_log_at_trx_commit 主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0.1.2三个.该参数控制重做日志写入 ...

  2. JAVA concurrent包下Semaphore、CountDownLatch等用法

    CountDownLatch 跟join的区别 CountDownLatch用处跟join很像,但是CountDownLatch更加灵活,如果子线程有多个阶段a.b.c; 那么我们可以实现在a阶段完成 ...

  3. Linux上搭建SVN服务

    环境:centos7 一.搭建svn服务 1. 安装svn yum -y install subversion 2. 创建一个目录作为svn服务的地址(svn://192.168.0.2:3690 访 ...

  4. Go Programming Language

    [Go Programming Language] 1.go run %filename 可以直接编译并运行一个文件,期间不会产生临时文件.例如 main.go. go run main.go 2.P ...

  5. 团队项目-Beta冲刺及发布说明

    请大家在每次作业开头添加格式描述: 这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 <写上团队名称>(附上团队博客链接) 这 ...

  6. Cutting Bamboos(2019年牛客多校第九场H题+二分+主席树)

    题目链接 传送门 题意 有\(n\)棵竹子,然后有\(q\)次操作,每次操作给你\(l,r,x,y\),表示对\([l,r]\)区间的竹子砍\(y\)次,每次砍伐的长度和相等(自己定砍伐的高度\(le ...

  7. 03-C#笔记-数据类型

    --- # 1 数据类型 --- ## 1 和C++不同的数据类型: byte: 8位,0~255 decimal:范围大于double,128位 sbyte: 8位,-128~127 uint 32 ...

  8. RabbitMQ六种队列模式-简单队列模式

    前言 RabbitMQ六种队列模式-简单队列 [本文]RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主 ...

  9. Pandas | 12 选项和自定义

    Pandas提供API来自定义其行为的某些方面,大多使用来显示. API由五个相关函数组成.它们分别是: get_option() set_option() reset_option() descri ...

  10. NetworkManager需要与不需要

    需要: 1.nmcli配置网络 不需要: 1.   ifcfg-eth1:0(网卡的子接口配置文件)生效