【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
依赖一个程序来看,
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

点进去

基本到头

经过老师的勾勾选选

最后剩了俩

点进Registrar

这个类的功能就是能够按照BeanDefinition 的形式去定义bean ,并且分情况处理
这一节太难做笔记了…

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

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

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

原因就在于现在我的程序现在在com.dingjiaxiong 包下,这个程序作为整个应用的入口,它需要扫描它所在的包和其子包【扫哪儿就是这样得到的】
所以,@Import({AutoConfigurationPackages.Registrar.class}) 这个东西设置当前配置所在的包作为扫描包,后续要针对当前的包进行扫描【确认包信息】