SpringBoot SpringBoot 原理篇 1 自动配置 1.15 自动配置原理【1】
创始人
2024-02-21 03:07:06
0

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.15 自动配置原理【1】
          • 1.15.1 看源码了
          • 1.15.2 @Import({AutoConfigurationPackages.Registrar.class})

1 自动配置

1.15 自动配置原理【1】

1.15.1 看源码了

依赖一个程序来看,

package com.dingjiaxiong;import com.dingjiaxiong.bean.CartoonCatAndMouse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Import;/*** ClassName: App* date: 2022/10/25 13:03** @author DingJiaxiong*/@SpringBootApplication
@Import(CartoonCatAndMouse.class)
public class App {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(App.class);CartoonCatAndMouse bean = context.getBean(CartoonCatAndMouse.class);bean.play();}}

运行结果

在这里插入图片描述

OK, 结果不重要

整个程序的开始

@SpringBootApplication

这个注解,点击进去看看

在这里插入图片描述

可以看到它是若干个注解的组合注解

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

看这三个

在这里插入图片描述

意思就是上面那个是下面3个的合体

点进第一个 SpringBootConfiguration

在这里插入图片描述

又看@Configuration 里面

在这里插入图片描述

主要看这个

然后@Indexed

在这里插入图片描述

再看@EnableAutoConfiguration 【自动配置的开关】

点进去

在这里插入图片描述

主要就是这两个

在这里插入图片描述

看看@ AutoConfigurationPackage

在这里插入图片描述

再看@ComponentScan

在这里插入图片描述

点进去

在这里插入图片描述

基本到头

在这里插入图片描述

经过老师的勾勾选选

在这里插入图片描述

最后剩了俩

在这里插入图片描述

1.15.2 @Import({AutoConfigurationPackages.Registrar.class})

点进Registrar

在这里插入图片描述

这个类的功能就是能够按照BeanDefinition 的形式去定义bean ,并且分情况处理

这一节太难做笔记了…

在这里插入图片描述

对于这个方法进行断点调试

在这里插入图片描述

可以看到这个东西计算出来是我当前的包名

在这里插入图片描述

现在这个方法貌似是获取了我的包

在这里插入图片描述

原因就在于现在我的程序现在在com.dingjiaxiong 包下,这个程序作为整个应用的入口,它需要扫描它所在的包和其子包【扫哪儿就是这样得到的】

所以,@Import({AutoConfigurationPackages.Registrar.class}) 这个东西设置当前配置所在的包作为扫描包,后续要针对当前的包进行扫描【确认包信息】

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...