如何自己实现一个Starter组件

294 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

u=2278403574,1082855646&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto.jpg

前言

我们在开发过程中通常都会用各种带有starter的Jar包,比如spring-boot-starter、spring-boot-starter-data-redis、spring-boot-starter-security 等很多jar… 前面通过对Spring Boot自动装配的源码分析,我们知道是通过@EnableAutoConfiguration自动装配的注解,通过去缓存或者通过SpringFactoriesLoader去扫描META-INF/spring.factories文件,将文件里面的Bean加载到Spring的bean容器里面去,具体原理可以看juejin.cn/post/711801… Spring boot 到底是如何实现自动装配的

具体实现

创建项目

首先我们自己创建一个工程,就拿我创建的这个工程为例,首先我们创建的是Spring Boot项目。

4668A744-F1C1-495B-92D1-068D68C78B46.png

引入jar包

我们就要引入

<!-- SpringBoot 依赖配置 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

自定义配置类

20FAD6C1-A10D-4944-995B-077F87461911.png

创建factories

在resource目录下创建META-INF/spring.factories文件,并将需要提供类的全路径写入

3CE37740-FC8B-48D0-9D89-7EC32DDF6A42.png

Package打包

B6D0A58E-21F5-48A2-83F3-4D52DFFB33C5.png

通过Maven点击package打包将项目打成jar包,会生成在我们的maven本地仓库。

364B5066-7CFA-495E-9984-492FF4213F9A.png

项目引入

通过在项目中引入前面打好的jar包,groupId、artifactId、version,将Lxlxxx-auth引入项目中

2CE8BB9A-154C-4005-AC03-843E73C8A276.png 可以通过注入Bean来调用方法,因为LxlxxxAuthApplication配置的是Configuration所以项目在启动的时候就会调用AuthApplicationTest打印输出

1D3E274E-F633-4666-9C2E-4300F085FC24.png FCBF7A37-F9CF-46C3-AA5A-E7A071461AE8.png