您的位置:首页 > 编程语言 > Java开发

SpringBoot 核心注解及启动过程

2020-03-13 18:34 375 查看

一、SpringBoot核心注解及其作用

@SpringBootConfiguration

声明为配置类(根配置类,首先扫描该类,本身是一个IOC容器的配置类),将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
SpringBoot使用Java Config技术进行配置,Java Config使用注解和Java代码的方式代替xml配置文件

  • 任何一个标注了@Configuration的Java类定义都是一个JavaConfig配置类。
  • 任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成该bean定义的id。
@ComponentScan

自动扫描当前包及子包下被@Component,@Controller,@Service,@Repository注解标记的类,将其作为bean加载到IOC容器中。
不指定范围则默认从注解所在类的包下进行扫描。

@EnableAutoConfiguration

核心注解,是自动配置的入口,SpringBoot根据添加的jar包来进行项目的默认配置

二、SpringBoot自动配置如何实现

  • @EnableAutoConfiguration是实现自动配置的入口
  • 该注解又通过@Import注解完成导入配置的功能,导入了AutoConfigurationImportSelector,这是一个自动配置文件收集器
  • 该类中的selectImports()方法内部使用SpringFactoriesLoader.loadFactoryNames()方法进行扫描具有META-INF/spring.factories文件的jar包,返回类全名经过滤后返回一个类全名的数组
  • 返回的类全名通过反射被实例化,就形成了具体的工厂实例
  • 工厂实例来生成组件具体需要的bean,加载到IOC容器中

    spring.factories文件
  • 该文件中定义了关于配置类的初始化,监听器等信息,并使用EnableAutoConfiguration使自动配置生效
  • EnableAutoConfiguration中配置了多个自动配置相关类,在启动过程中会解析对应类配置信息
  • 每个Configuation类都定义了相关bean的实例化配置,使用@Conditonal注解声明自动配置的条件

三、SpringBoot的启动过程

  • 首先进入run方法,在run方法中创建一个SpringApplication实例,在构造方法内调用了初始化的initialize方法(创建监听器,加载springboot配置环境)
  • 执行run方法创建Spring容器
  • 点赞
  • 收藏
  • 分享
  • 文章举报
TJH54 发布了5 篇原创文章 · 获赞 0 · 访问量 90 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: