SpringBoot SpringBoot 原理篇 1 自动配置 1.15 自动配置原理【1】
创始人
2024-02-21 09:51:11

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}) 这个东西设置当前配置所在的包作为扫描包,后续要针对当前的包进行扫描【确认包信息】

相关内容

热门资讯

云南师大附中两名学子包揽云南... 云南师大附中两名学子包揽云南省文理科状元 篇一近日,云南师大附中喜讯传来,该校两名学子分别在云南省文...
高考英语100个捷径范文51... 高考英语100个捷径范文51篇 篇一:如何提高英语阅读能力英语阅读是高考英语考试的重要部分,也是很多...
高考作文:可为与有为【通用6... 高考作文:可为与有为 篇一可为与有为在高考的大背景下,可为与有为成为了学生们思考的重要话题。可为,是...
高考满分作文400字:失落的... 高考满分作文400字:失落的文明 篇一近年来,人们不禁感叹,尽管科技的飞速发展给我们带来了许多便利,...
高考满分作文:落后是要挨打的... 高考满分作文:落后是要挨打的 篇一落后是要挨打的近年来,我国在科技、经济、教育等领域取得了长足的发展...