springboot自定义starter

一、简述

Spring Boot Starter的实现,需要完成两件事:

1.引入模块所需的相关jar包
2.自动装配模块所需的配置到容器

命名规则

通过官网可知:

前缀固定:spring-boot-starter-xxx,其中xxx是特定类型的应用程序,此命名结构目的在需要查找入门时提供帮助。

例如:

spring-boot-starter-web 基于Spring MVC 构建 Web应用容器。使用 Tomcat 作为默认的嵌入式容器

spring-boot-starter-jdbc 数据库连接模块

自定义命名

以模块名称开头,后缀固定:xxx-spring-boot-starter

例如:mybatis-plus-boot-starter

二、查看springboot启动容器并实现自动装配

首先我们看springboot启动类的注解:

进入该注解便可看到下面的自动装配的注解@EnableAutoConfiguration

@AutoConfigurationPackage:这个注解用于指定自动配置的包。当Spring Boot启动时,它会扫描这个包下的所有类,并自动配置它们。

@Import({AutoConfigurationImportSelector.class}):这个注解用于指定自动导入的配置类。AutoConfigurationImportSelector是一个接口,Spring Boot会根据这个接口来选择需要导入的配置类

由此进入AutoConfigurationImportSelector这个类中可以发现getCandidateConfigurations类获取候选配置中的SpringFactoriesLoader

点击SpringFactoriesLoader进入该类发现META-INF/spring.factories配置文件

由此可看出,对于springboot提供的其他模块配置的装配,其通过文件META-INF/spring.factories来加载,starter关于配置的自动装配

三、现在再类举mybatis-plus-boot-starter实现过程

现在总结上面结论可以看到以下的内容

通过查看spring.factories,其Mybatisplus的配置,

key:org.springframework.boot.autoconfigure.EnableAutoConfiguration

value是:com.baomidou.mybatisplus.autoconfigure.SafetyEncryptProcessor

(values值多个以逗号(“,”)相隔 ,每个value为一个配置类)

现在我们单独抽取一个MybatisPlusAutoConfiguration来看看

@ConditionalOnClass 表示在类存在的情况下进行自动配置

@EnableConfigurationProperties,使@ConfigurationProperties注解生效,把 MybatisProperties注入入到 IOC 容器中。

@AutoConfigureAfter,完成自动配置后实例化这个bean

在进入MybatisPlusProperties类中便可发现该类与yml配置文件的关系

通过查看mybatis-plus-boot-starter,可以发现starter包很简单,没有class文件,只是把starter当做一个相对完整的模块的入口,通过pom文件引入其模块依赖的jar包和配置包,在项目上需要使用此模块时,只需引入这个依赖即可。

四、照葫芦画瓢自定义Spring Boot Starter

使用之后便可直接注入使用该service中的方法了

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈步汀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值