SpringBoot - Starter原理

Spring和SpringBoot发开的时候有一个很大的区别就是:我们在用SpringBoot的时候只需要引入对应的spring-boot-starter-xxx(第三方命名规则:xxx-spring-boot-starter)就能使用对应的组件做开发了。

Starter

一般没有业务逻辑代码,被第三方引入的入口,起到一个包装、统筹的作用。还有引入一个与之对应的Autoconfigure工程

Autoconfigure

这里会包含三类文件:

  • xxxAutoConfiguration(用@Configuration标注,告诉SpringBoot这是一个配置类)
  • 真正的业务逻辑组件和配置文件类(用@EnableConfigurationProperties注解引入
    的xxxProperties,然后被业务逻辑组件引用获取属性值)
  •  META-INFO/spring.factroies文件

关系图例

mybatis的启动器事例

mybatis的starter和autoconfigure中的各个模块

MybatisAutoConfiguration(被@Configuration注解标注)中通过@Bean把我们开发中需要用到的SqlSessionFactory实例对象注入到IOC中,SqlSessionFactory的属性从MybatisProperties对象中获取的

mybatis的starter通过pom把对应的mybatis的autoconfigure依赖进来了

使用mybatis

接下来使用mybatis的话就很简单了,直接在pom.xml中引入mybatis的启动器就可以使用了

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

自定义启动器

如果你有自定Starter的需求的话,只需要实现上图深蓝色部分就可以了,接下来的事情就交给SpringBoot了

spi(听到spi后有没有想到api?)相关解答,这里附上知乎大神的解答:https://zhuanlan.zhihu.com/p/28909673

猜你喜欢

转载自blog.csdn.net/qq_27062249/article/details/118384934