zoukankan      html  css  js  c++  java
  • springboot自动配置原理

    SpringBoot自动配置流程

    1、查看注解@SpringBootApplication,这是一个组合注解,它组合了另一个注解@EnableAutoConfiguration

    2、@EnableAutoConfiguration注解导入了一个类AutoConfigurationImportSelector.class

    3、AutoConfigurationImportSelector.class会从内存中读取已经由spring SPI机制缓存好的 META-INFO/spring.factories 文件的内容

    4、META-INFO/spring.factories里有一个key是org.springframework.boot.autoconfigure.EnableAutoConfiguration的键值对,其对应的value是多个类的全限定名

    5、根据这些全限定名的类上的注解如:OnClassCondition、OnBeanCondition、OnWebApplicationCondition条件化的决定要不要自动配置

      OnClassCondition——SpringBoot根据类路径中是否存在某个类,以决定要不要实现某个自动配置。


    自定义Starter

    写一个不依赖spring的项目,想和springboot整合,如mybatise,方法如下:

    1、新建一个starter项目,依赖springboot和mybatis。
    2、写一个添加了@Configuration注解的MybatisAutoConfiguration类,在这个类上添加条件约束,如SqlSessionFactory在不在类路径中,有没有DataSource的实例(如果类路径有连接池,这个实例默认会被springboot创建)。
    3、在META-INF下新建一个spring.factories文件,声明一个key value对,value是MybatisAutoConfiguration,key一定要是org.springframework.boot.autoconfigure.EnableAutoConfiguration。spring的SPI机制会读取每个jar包里META-INF下的spring.factories里的内容。

  • 相关阅读:
    10年学到的编程经验总结
    测试框架 Mocha 实例教程
    在 Flutter 中玩转 Objective-C Block
    使用Gulp压缩混淆JS的相关配置
    Gulp前端自动化构建工具
    常用的十大 NodeJS 框架
    如何使用Vue中的嵌套插槽(包括作用域插槽)
    通过Python代码操作MySQL:
    使用python发邮件:
    jquery:
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/13040236.html
Copyright © 2011-2022 走看看