SpringBoot入门之运行原理,启动类的作用, @SpringBootApplication注解作用 03

3. SpringBoot运行原理剖析

3.1 SpringApplication类作用及run()方法作用

SpringBoot入门之运行原理,启动类的作用, @SpringBootApplication注解作用 03_第1张图片

  • SpringApplication这个类整合了其他框架的启动类, 只要运行这一个类,所有的整合完成.
  • 调用run函数, 将当前启动类的字节码传入, 以及main函数的args参数
  • 通过获取当前启动类的核心信息, 创建IOC容器.

3.2 当前启动类@SpringBootApplication详细剖析

run函数传入的当前启动类字节码, 最重要的是传入了@SpringBootApplication, 点开该注解源码, 会发现有多个注解组成,接下来会一一解释每个注解的含义.
SpringBoot入门之运行原理,启动类的作用, @SpringBootApplication注解作用 03_第2张图片

  1. JDK原生注解4个
@Target(ElementType.TYPE) //当前注解的使用范围
@Retention(RetentionPolicy.RUNTIME) //生命周期
@Documented //声明在生成doc文档时是否带着注解
@Inherited //声明是否子类会显示父类的注解
  1. @SpringBootConfiguration
    点开该注解源码, 会发现本质是@Configuration
    SpringBoot入门之运行原理,启动类的作用, @SpringBootApplication注解作用 03_第3张图片
  • 提到@Configuration就要提到他的搭档@Bean, 使用这两个注解就可以创建一个简单的Spring配置类, 可以用来替代相应的xml配置文件.
  1. @EnableAutoConfiguration
    点开源码会发现,本质是@import
    SpringBoot入门之运行原理,启动类的作用, @SpringBootApplication注解作用 03_第4张图片
  • 能够自动配置Spring的上下文, 视图猜测和配置你想要的bean类, 通常会自动根据你的类路径和你的bean定义自动配置.
  1. @ComponentScan
  • 会自动扫描指定包下的全部@Componetn的类, 并注册成bean对象.
    所以,为什么启动类要创建在base包下呢?
    原因就是当项目运行的时候,会自动扫描当前启动类所在包下及其子包下的所有内容.

3.3 总结

一个@SpringBootApplication注解就搞定了所有时, 它封装了核心的@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan这三个类,大大节省了程序员配置时间,这就是SpringBoot的核心设计思想.

你可能感兴趣的:(SpringBoot)