@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及其衍生注解声明的类。
相关推荐
渣哥6 分钟前
面试官:为什么阿里巴巴要重写HashMap?ConcurrentHashMap哪里不够用?
java
喵手8 分钟前
Java中的HashMap:你了解它的工作原理和最佳实践吗?
java·后端·java ee
Gavin_91512 分钟前
一文速通Ruby语法
开发语言·ruby
weixin_4565881512 分钟前
【java面试day16】mysql-覆盖索引
java·mysql·面试
心月狐的流火号15 分钟前
计算机I/O模式演进与 Java NIO 直接内存
java·操作系统
猿究院-赵晨鹤18 分钟前
JVM基础知识总结
java·jvm
搞一搞汽车电子23 分钟前
vs studio 2017项目不支持studio vs2022
开发语言
代码输入中...26 分钟前
JVM常见面试题及答案
java·jvm·java面试·java面试题·jvm面试题
猿究院--冯磊34 分钟前
JVM垃圾收集器
java·jvm·算法