当前位置: 首页 > news >正文

SpingBoot自动装配原理

1.springboot的核心注解为@SpringBootApplication

SpringBootApplication里面和三个核心注解:

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
@SpringBootConfiguration注解:

1.可以将引导类变成配置类,能在类中通过@Bean注解将对象放到spring容器中

@EnableAutoConfiguration:

自动配置的核心注解

1.首先我们打开EnableAutoConfiguration里面看一下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gyU7gu0t-1664026616221)(/Users/luoweiqiang/Desktop/截屏2022-09-24 下午8.57.01.png)]

这个import注解里面的AutoConfigurationImportSelector.class我们需要点进去看一下

这时候找到这个方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNnEoDOy-1664026616222)(/Users/luoweiqiang/Desktop/截屏2022-09-24 下午9.03.04.png)]

1.getCandidateConfigurations返回了127个所有的配置类都拿了出来
2.然后进行排除一些我们不需要的自动配置类
3.过滤掉不满足条件的配置类

getCandidateConfigurations方法讲解:

找到getCandidateConfigurations方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PGssMDM3-1664026616223)(/Users/luoweiqiang/Desktop/截屏2022-09-24 下午8.59.11.png)]

我们可以发现springboot启动的时候去找了这个配置文件,这个配置在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RQ84bs1D-1664026616223)(/Users/luoweiqiang/Library/Application Support/typora-user-images/image-20220924210643471.png)]

过滤详解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F6XIbzuP-1664026616223)(/Users/luoweiqiang/Desktop/截屏2022-09-24 下午9.16.11.png)]

Conditional:

1.根据配置类上的Conditional检验条件是否满足,如果满足条件就可以被加载

ConditionalOnMissingBean:

如果自己创建了对应的对象,框架就不会自动创建对象

自定义配置详解:

已知条件我们如果使用RedisTemple springboot会给我自动默认一个配置(通常情况下为本机)

1.我们在配置文件自定义了redis配置如何生效:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8on1uUl-1664026616223)(/Users/luoweiqiang/Desktop/截屏2022-09-24 下午9.25.31.png)]

这里点进RedisProperties就可以知道了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PKTo3KWv-1664026616223)(/Users/luoweiqiang/Desktop/截屏2022-09-24 下午9.32.40.png)]

@ComponentScan:

包扫描,扫描引导类所在包和子包

相关文章:

  • qt编程中的一些技巧
  • 刷题记录:NC146615简单的数据结构
  • 2022.10月11月todo
  • Pytorch混合精度训练
  • 不会代码(实操能力弱一点)的我如何快速开发出一个Android/Web/IOS/小程序
  • 【博客503】kubelet device plugin如何管理与分配device
  • 第4章-4 验证“哥德巴赫猜想”
  • 嗨购商业模式赋能消费者、创业者和实体商家,助力中小微企业
  • 1469_TC275串口字符串输出例程中的中断功能分析
  • 360面试——计算机视觉面试
  • CentOS6.9更换yum源镜像网站方法大汇总
  • React组件间传值
  • SQL入门(三)数据库之表连接(内联外联的区别)
  • BUUCTF-社团考核
  • 基于卷积神经网络故障诊断模型的 t-SNE特征可视化
  • Angular数据绑定机制
  • canvas 高仿 Apple Watch 表盘
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • classpath对获取配置文件的影响
  • golang 发送GET和POST示例
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js
  • JS基础之数据类型、对象、原型、原型链、继承
  • Laravel5.4 Queues队列学习
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Theano - 导数
  • TypeScript实现数据结构(一)栈,队列,链表
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 关于extract.autodesk.io的一些说明
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 机器学习学习笔记一
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 前端之React实战:创建跨平台的项目架构
  • 时间复杂度与空间复杂度分析
  • 使用权重正则化较少模型过拟合
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微服务核心架构梳理
  • 微服务框架lagom
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 带你开发类似Pokemon Go的AR游戏
  • 交换综合实验一
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​什么是bug?bug的源头在哪里?
  • #if #elif #endif
  • #pragma once与条件编译
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十八)SpringBoot之发送QQ邮件
  • (原創) 物件導向與老子思想 (OO)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Linux下编译安装log4cxx
  • (转)项目管理杂谈-我所期望的新人