zoukankan      html  css  js  c++  java
  • 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個,截取部分

     

     

  • 相关阅读:
    Java 函数式编程—@FunctionalInterface----functional interface
    人月神话的博客
    如何度量复杂度
    泛型沉思录:创建模版与使用模版生成代码
    ioc与bean管理
    模式(思维)匹配是什么
    简析散光的成因,以及什么是散光的度数和轴位?
    概括是什么?
    思维与模型、世界观
    抽象、维度、层次与分析、综合
  • 原文地址:https://www.cnblogs.com/Jashinck/p/15115488.html
Copyright © 2011-2022 走看看