@SpringBootApplication 详解

@SpringBootApplication 详解

@SpringBootApplication标识在Spring工程的引导启动类上,是Spring最最最重要的注解,封装了如下注解:

  1. @SpringBootConfiguration:底层封装了@Configuration,用于声明当前类也是一个配置类。
  2. @EnableAutoConfiguration :自动配置的核心注解。
    a. 封装了@Import注解,@Import注解中指定了ImportSelector接口的实现类。
    b. 这个实现类中实现了 ImportSelector 接口中的 selectImports() 方法,返回值是一个String数组,这个数组中封装的就是要导入到IOC容器的类的全类名。
    c. selectImports() 方法中会读取两份配置文件,并将配置文件中定义的配置类做为selectImports()方法的返回值返回,返回值代表的就是需要将哪些类交给Spring的IOC容器进行管理。
    d. Spring项目启动时,就会去加载配置文件中配置的配置类,将配置类的信息封装到String数组中,最终通过@import注解导入 ImportSelector接口的实现类,从而将这些配置类全部加载到Spring的IOC容器中。

❓配置文件中定义了非常多的配置类,每一个配置类中又定义了很多Bean,所有的Bean都会注入到Spring 的IOC容器中吗?

✍️不是。配置类在声明 bean 的时候会添加 @Conditional 条件装配注解及其衍生的一堆子注解。

按照一定的条件进行判断,满足条件的时候才会将对应的bean对象注入到Spring的IOC容器中。

  1. @ComponentScan:组件扫描,默认扫描当前引导类所在的包及其子包。扫描 启动类所在的包及其子包下所有被@Component及其衍生注解声明的类。
相关推荐
北执南念2 分钟前
项目代码生成工具
java
yuanpan5 分钟前
C#如何正确的停止一个多线程Task?CancellationTokenSource 的用法。
开发语言·c#
程高兴7 分钟前
单相交直交变频电路设计——matlab仿真+4500字word报告
开发语言·matlab
中国lanwp8 分钟前
springboot logback 默认加载配置文件顺序
java·spring boot·logback
cherishSpring19 分钟前
在windows使用docker打包springboot项目镜像并上传到阿里云
spring boot·docker·容器
苹果酱056740 分钟前
【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
java·vue.js·spring boot·mysql·课程设计
我真的不会C1 小时前
QT中的事件及其属性
开发语言·qt
Java致死1 小时前
单例设计模式
java·单例模式·设计模式
胡子发芽1 小时前
请详细解释Java中的线程池(ThreadPoolExecutor)的工作原理,并说明如何自定义线程池的拒绝策略
java
沫夕残雪1 小时前
Tomcat的安装与配置
java·tomcat