自动配置原理精讲



派生注解

配置文件怎么配置

server.port

spring.config.location=”D://application.properties”

https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-application-properties

https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/htmlsingle/#common-application-properties




自动配置原理精讲

  1. SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration

   查看AutoConfigurationImportSelector.class

            

进入getCandidateConfigurations()

进入loadFactoryNames ()

进入loadSpringFactories ()



总结 

- SpringBoot启动会加载大量的自动配置类

- 我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;

- 我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了)

- 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值;

- xxxxAutoConfigurartion:自动配置类;给容器中添加组件

- xxxxProperties:封装配置文件中的默认配置



@Conditional派生注解

@ConditionalOnJava 系统的java版本是否符合要求

@ConditionalOnBean 容器中存在指定Bean;

@ConditionalOnMissingBean 容器中不存在指定Bean;

@ConditionalOnExpression 满足SpEL表达式指定

@ConditionalOnClass 系统中有指定的类

@ConditionalOnMissingClass 系统中没有指定的类

@ConditionalOnSingleCandidate 容器中只有一个指定的Bean,或者这个Bean是首选Bean

@ConditionalOnProperty 系统中指定的属性是否有指定的值

@ConditionalOnResource 类路径下是否存在指定资源文件

@ConditionalOnWebApplication 当前是web环境

@ConditionalOnNotWebApplication 当前不是web环境

@ConditionalOnJndi JNDI存在指定项

所有的条件配置之间的关系是并且的关系



我们怎么知道哪些自动配置类生效?

我们可以通过启用debug=true属性(在配置文件配置);

来让控制台打印自动配置报告,这样我们就可以很方便的知道哪些自动配置类生效;

自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);相关推荐

  1. 深入Java核心 Java内存分配原理精讲

    深入Java核心 Java内存分配原理精讲 Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详 ...

  2. 视频教程-区块链技术原理精讲-区块链

    区块链技术原理精讲 5年JAVA/Go研发工程师经验.目前作为公司技术负责人从事区块链架构设计.研发工作. 熟悉分布式系统/区块链.云计算/虚拟化技术.敏捷开发等领域技术,开源软件爱好者. 荆帅帅 ¥ ...

  3. JavaScript核心原理精讲第三章 数组原理和排序

    07-数组原理(上):帮你梳理眼花缭乱的数组 API 我在上一讲为你剖析了闭包这个难点,带你了解了作用域.闭包产生的原因及表现形式.那么这一讲,我们一起来手工实现一个 JSON.stringify 的 ...

  4. ShardingSphere分库分表核心原理精讲第十一节 分布式事务详解

    27 分布式事务:如何理解 ShardingSphere 中对分布式事务的抽象过程? 从今天开始,我们将进入一个全新模块,即ShardingSphere 分布式事务.这是一个非常重要的主题,我们将通过 ...

  5. ShardingSphere分库分表核心原理精讲第十二节 数据安全和脱敏详解

    本资源由 itjc8.com 收集整理 今天,我们讨论 ShardingSphere 中的数据脱敏模块.通过在 "10 | 数据脱敏:如何确保敏感数据的安全访问?" 课时中的介绍, ...

  6. LUT查找表实现多路复选器原理精讲

    (1)多路复选器的概念 多路复用器即数据选择器,用来将N个输入通道的数据复用到一个输出通道上,多路复用器在数字系统中有着非常重要的应用.4选1多路复用器的实现结构如图所示: 图中有四路数据 C0到C3 ...

  7. 2 Java并发原理精讲课程学习笔记

    1.1.初始线程8大核心基础 实现多线程的方法到底有1种还是2种还是4种? 怎样才是正确的线程启动方式? 如何正确停止线程? 线程的一生--6个状态(生命周期) Thread和Object类中的重要方 ...

  8. Selenium原理精讲

    Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试(目前支持的语言有Java,Python,Ruby ...

  9. java 检测硬盘原理_深入Java核心 Java内存分配原理精讲

    Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 ...

最新文章

  1. 龙岩学院和三明学院计算机专业,龙岩学院和三明学院哪个比较好?
  2. 转:中国学生为什么学不好计算机 谭浩强
  3. delphi开发回忆录——示例源码下载
  4. Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块
  5. Linux 命令之 arch --显示主机的硬件结构类型
  6. python嵌入shell代码_大家一起学python-Python基础1
  7. Java 10 var关键字详解和示例教程
  8. android实现应用程序只有在第一次启动时显示引导界面
  9. UNIX环境高级编程之第9章:进程关系
  10. Eclipse 导入项目与 svn 插件关联全过程记录
  11. 前端js-angluar定时刷新器
  12. ARM SMMU的原理与IOMMU
  13. 电摩测试速度什么软件,速度最快的4款新电动车,你更看好谁?为什么呢?
  14. 【抽象代数概念速查】Lagrange Interpolation-拉格朗日插值
  15. 手机里竟然有这么多传感器!终于都搞懂了
  16. MFC 绘制半透明图片
  17. java计算器制作教学视频_java实例——简单计算器的制做
  18. JavaScript的入门(下)
  19. 使用 kubectl drain 从集群中移除节点
  20. 迪杰特斯拉算法+堆优化

热门文章

  1. ios hitTest及扩展---分解ZFPlayer
  2. jquery和bottstrap
  3. Java Struts2 (一)
  4. lintcode-167-链表求和
  5. 为什么用C而不用C++
  6. CRS中常用的OCR和Votedisk的操作命令小结
  7. xheditor开源编辑器ajax上传功能的完善
  8. 基于IMX515EVK+WINCE6.0---支持PB6.0通过USB下载镜像文件
  9. 关于GCD多任务处理
  10. linux日常笔记3