SpringBoot核心简述

 

同SpringMVC相比,SpringBoot体现出来的核心理念为"约定优于配置"。而实践这一核心的要素就是各类starter。

一,主要Module

  spring-boot  核心工程

  spring-boot-starters  启动服务工程

  spring-boot-autoconfigure  自动配置的核心工程  负责加载注入spring.factories下的配置starters

  spring-boot-actotor  提供应用监控类功能,如Endpoints(应用状态监控), HealthIndicator(应用健康监控)等

  spring-boot-tools 常用工具集,如spring-boot-maven-plugin

  spring-boot-cli 命令行交互工具

  核心工程为: spring-boot, spring-boot-autoconfigure

 

二,Starter实现的主要方式

一是声明依赖Jar包,二是在依赖Jar包中提供AutoConfiguration类,实现自动加载属性。

1,Starter

SpringBoot官方推荐使用starter提供一个spring.providers文件,用来声明当前starter所依赖的jar包。

例如,spring-boot-starter-web的spring.providers文件为,

provides: spring-webmvc,spring-web

即,分别提供mvc和web的功能。

 

2,XXXAutoConfiguration的注解解读

a, ConditionalOnXXX条件注解

    比如ConditionalOnWebapplication 当前为Webapplication才创建Bean

           ConditionalOnMissingBean(B.class) 当前指定的B对象不存在才创建。

b,EnableConfigurationProperties(XProperties.class) 使用XProperties获得application.properties的实现

c, Import(YConfiguration.class, ZConfiguration.class)导入Y,Z 配置类

d, Configuration 基本配置注入属性。

e,在 resources/META-INF下创建一个名为spring.factories的文件,该文件将告知spring-boot,需要自动配置的属性类

 

3, SpringApplication.run所经过的自动配置属性注入

1)refreshContext:refresh:

2)invokeBeanFactoryPostProcessors:invokeBeanFactoryPostProcessors

3)invokeBeanDefinitionRegistryPostProcessors:

4)postProcessBeanDefinitionRegistry:processConfigBeanDefinitions

5)parse:processDeferredImportSelectors

6)getImports:process:selectImports:

7)getCandidateConfigurations

8)loadFactoryNames

Code :

configurations:共180個,截取部分

 

 

原文地址:https://www.cnblogs.com/Jashinck/p/15115488.html