首页 > 其他分享 >springBoot自动装配机制

springBoot自动装配机制

时间:2023-06-07 10:22:41浏览次数:34  
标签:装配 springBoot 配置 AutoConfigurationImportSelector 自动 Import 解析 class

自动配置原理

@SpringBootApplication 是一个组合注解,由 @ComponentScan、@EnableAutoConfiguration 和 @SpringBootConfiguration 组成

  1. @SpringBootConfiguration 与普通 @Configuration 相比,唯一区别是前者要求整个 app 中只出现一次

  2. @ComponentScan

    • excludeFilters - 用来在组件扫描时进行排除,也会排除自动配置类

  3. @EnableAutoConfiguration 也是一个组合注解,由下面注解组成

    • @AutoConfigurationPackage – 用来记住扫描的起始包

    • @Import(AutoConfigurationImportSelector.class) 用来加载 META-INF/spring.factories 中的自动配置类

为什么不使用 @Import 直接引入自动配置类

有两个原因:

  1. 让主配置类和自动配置类变成了强耦合,主配置类不应该知道有哪些从属配置

  2. 直接用 @Import(自动配置类.class),引入的配置解析优先级较高,自动配置类的解析应该在主配置没提供时作为默认配置

因此,采用了 @Import(AutoConfigurationImportSelector.class)

  • AutoConfigurationImportSelector.class 去读取 META-INF/spring.factories 中的自动配置类,实现了弱耦合。

  • 另外 AutoConfigurationImportSelector.class 实现了 DeferredImportSelector 接口,让自动配置的解析晚于主配置的解析

标签:装配,springBoot,配置,AutoConfigurationImportSelector,自动,Import,解析,class
From: https://www.cnblogs.com/zwy-yjy/p/17462588.html

相关文章

  • 记一次用SpringBoot默认连接池HikariCP拿不到连接问题
    记一次用SpringBoot默认连接池HikariCP拿不到连接问题1、问题发现最近项目总接到反馈有用户登录不上系统情况,通过查看日志,并验证多次访问都是正常。2、排查问题安装pinpoint监控后,通过pinpoint监控发现确实会存在获取连接超时情况,如下图查看最近访问情况,发现存在大量超时情况,如下......
  • 基于JAVA的springboot+vue人事管理系统、员工工资管理系统,附源码+数据库+论文+PPT
    1、项目介绍考虑到实际生活中在人事管理方面的需要以及对该系统认真的分析,将系统权限按管理员和员工这两类涉及用户划分。(a)管理员;管理员使用本系统涉到的功能主要有:首页,个人中心,员工管理,部门管理,员工考勤管理,请假申请管理,加班申请管理,员工工资管理,招聘计划管理,员工培训管理,部......
  • DeepBurning:神经网络系列学习加速器自动生成
    介绍一下这篇论文所做的工作。Introduction首先是背景方面,现在出现了CNN、RNN、LSTM等多种神经网络,如何使用硬件加速的方法让这些网络跑的更快?现在已经有的工作:1.GPGPU加速矩阵乘法,可以处理非常大规模的CNN和多种GPU支持的学习框架,但缺点是硬件开销非常大,难以应用在嵌入式......
  • mysql数据库自动删除app用户数据库脚本
    该脚本为数据库自动删除脚本,db_list.tex为存放想要删除的数据库列表,需手动配置要好该列表。该脚本对mysql数据库本身重要数据库自动判断保护。#!/bin/bash#2012-12-25bycocoforiin`cat./db_list.txt`doif["$i"=="mysql"]||["$i"=="information_schema"]||[......
  • 自动部署信息采集脚本
    为了满足定制化需求,特对物理主机的多路径软件multipath服务和路径进行了脚本采集,并提供自动化部署路径。1、多路径采集脚本#!/bin/bash#resultincludevalid_num\invalid_num\source/etc/profile##获取ip地址bond1=`ipaddressshowdevbond1|grep172.29|awk-F"/"'{......
  • Jenkins自动部署与回滚
    Deploy发布的思路:用户无需填写Version 直接选择对应的项目和Deploy发布即可,会自动生成一个项目名+构建时间的备份文件多人使用Jenkins构建的时候会不知道Version要填什么 而且本人不喜欢使用Version这个变量Rollback回退的思路:选择Rollback 选择对应的回退版本......
  • 《springboot冲刺棒》application.yml篇
    $是什么意思application.yml中的jdbc:mysql://${MYSQL-HOST:127.0.0.1}的$是什么意思application.yml中的${MYSQL-HOST:127.0.0.1}实际上是SpringBoot应用程序的属性占位符,具有允许在特定位置引用应用程序中定义的属性的功能。在这种情况下,${MYSQL-HOST:127.0.0.1}引用的......
  • CentOS7.0设置开机网卡自动启动
    新安装的centos7系统网卡没有自动启动[root@ETS004~]#cd/etc/sysconfig/network-scripts[root@ETS004network-scripts]#ls//列出network-scripts文件夹下的列表信息找到ifcfg-ens197这类网卡信息[root@ETS004 network-scripts]#viifcfg-ens197......
  • centos 开机自动执行脚本
     要让CentOS在开机时自动执行脚本,你可以按照以下步骤进行操作:编写你需要执行的脚本文件。假设你的脚本文件名为 startup.sh,并且位于 /usr/local/bin/ 目录下。给脚本文件添加执行权限。你可以使用以下命令给文件添加执行权限: bash复制代码chmod+x/usr/lo......
  • QQ空间自动播放youku视频
    在百度空间或QQ空间中文文章中的播放器上加上一段视频,每次都要手动点击才能播放,很是不爽,http://tv.mofile.com/网站上的视频提供了自动播放代码,但是其它视频网站都没有提供怎么办呢?其实很简单,我们只要加上自动播放的参数:isAutoPlay=true       参数使用&连接,末尾使用#.mp3......