zoukankan      html  css  js  c++  java
  • SpringBoot自动配置原理分析

    Spring Boot

    Starter

    开箱即用的组件

    自动装配的功能

    Spring Framework > IOC

    applicationContext.xml

    HelloController hc = (HelloController)context.getbean("name")

    Bean 的装配

    --》

    配置文件过多》难以维护

    spring 2.5 注解的支持

    @Services / @Repository / @Controller / ...

    <context:componet-scan

    xml文件依然存在

    spring 3.0 之后 》 javaconfig 》 无配置化

    @Configuration

    手动的方式把Bean装配到IOC容器

    Spring里面本身就提供了这样的支持

    Enable* 自动配置

    自动将Bean装配到IOC容器

    EnableAutoConfiguration 自动装配

    自动装配依赖于spring的javaconfig

    Spring中的Javaconfig

    xml

    context:component-scan/

    JavaConfig

    @ComponetScan 》 扫描@Service @Repository …… 注解修饰的类,装配到IOC容器

    @import

    Spring IOC 容器,如何实现bean的装配

    @Enable

    ImportSelector

    导入 选择 》 选择性导入 》 选择性导入Bean对象

    导入规范

    1. 引入Starter组件,就能实现相关的Bean的自动装配。

    2. (约定优于配置)xxx-spring-boot-starter(非官方) / spring-boot-starter-xxx)(官方提供)

    3. Starter可以自己构建 》 也是为了实现自动装配。

    4. 或者说Starter中必须要基于某种标准定义一个文件或者类,才能够使得Spring Boot 自动装配扫描到对应的文件或者类来实现对应的Starter组件中的Bean的自动装配。

    SPI机制 JDK

    java.jdbc.Driver 》 数据库驱动类(JDK提供的标准)

    SpringFactoriesLoader

    spring里面提供的SPI

    Dubbo

    Spring Boot 官方和个人组织的Starter的区别

    @ConditionalOnClass

    官方提供的Starter相当于一个开关,只需要这个开关满足条件就就会触发装配

    自动装配思想理解图

    原视频观看

  • 相关阅读:
    释放jQuery 的$ 的使用权
    jQuery 入口函数主要有4种写法
    jQuery的 ready() 和原生 Js onload() 的主要区别:
    简单的单击图片循环播放
    Jsの练习-数组其他常用方法 -map() ,filter() ,every() ,some()
    Jsの练习-数组常用方法 -forEach()
    stylelint和eslint的VS插件配置
    工作中遇到的bug
    VUE关于data对象中数组修改和对象添加属性的响应式问题
    VUE的watch监听对象
  • 原文地址:https://www.cnblogs.com/userzf/p/12821376.html
Copyright © 2011-2022 走看看