一看就会,编写自己的SpringBoot-Starter

新闻 前端
starter的好处是,集成众多依赖,提供一个一站式的依赖项。 Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。

[[273092]]

开发自己的starter

starter的好处是,集成众多依赖,提供一个一站式的依赖项。 Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。 使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖, Spring Boot就能自动扫描并加载相应的模块。

命名

spring官方的starter命令为spring-boot-starter-xxx,所以我们开发的项目不要以spring-boot开头。 建议写成:xxx公司组织-spring-boot-starter-yyy模块

开发步骤

1.新建Maven项目,在项目的POM文件中定义使用的依赖;

2.新建配置类,写好配置项和默认的配置值,指明配置项前缀;

3.新建自动装配类,使用@Configuration和@Bean来进行自动装配;

4.新建spring.factories文件,指定Starter的自动装配类;

具体代码

1,新建一个springboot项目,在pom文件中增加以下依赖:

  1. <dependency> 
  2.  <groupId>org.springframework.boot</groupId> 
  3.  <artifactId>spring-boot-configuration-processor</artifactId> 
  4.  <optional>true</optional> 
  5. </dependency> 

主要的作用是在编译时在META-INF下生成spring-configuration-metadata.json 文件,该文件主要为IDE使用。 即可以通过在application.properties文件中通过ctrl + 点击进入配置属性所在的类中

2,配置类

一看就会,编写自己的SpringBoot-Starter

关键是要指定配置项的前缀。这些配置项,也可以设置默认值。

3,自动装配类

自动装配类是整个starter的逻辑核心。根据配置项的值,自动注入合适的bean。

在这个项目中,有一个抽象的AbstractMyService,代表客户端会使用的服务bean。

MyStarterServiceV1和MyStarterServiceV2是根据条件注入的具体实现类。

也就是客户端在配置spring101.version=v1会使用MyStarterServiceV1,

配置spring101.version=v2会使用MyStarterServiceV2

一看就会,编写自己的SpringBoot-Starter

4,新建spring.factories文件,指定Starter的自动装配类。

在resources下新建META-INF文件夹,新建spring.factories文件。内容为:

  1. #指定autoconfigure加载的自动装配类是哪个 
  2. org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.uncley.MyAutoConfiguration 

5,打包测试

maven clean install

先install到本地仓库测试

新创建一个普通的springboot工程:mystarter-use 依赖 在application.properties增加配置

  1. spring101.age=22 
  2. spring101.name=uncleY 
  3. spring101.version=v2 

写一个测试类

  1. @Component 
  2. @Slf4j 
  3. public class MyStarterUseTest implements CommandLineRunner { 
  4.  @Autowired 
  5.  private AbstractMyService myService; 
  6.  @Override 
  7.  public void run(String... args) throws Exception { 
  8.  log.info(myService.hello()); 
  9.  } 

通过修改spring101.version的值可以观察到,实例化了不同的service

一看就会,编写自己的SpringBoot-Starter

责任编辑:张燕妮 来源: 今日头条
相关推荐

2022-03-21 21:05:40

TypeScript语言API

2022-04-27 20:52:48

JSChrome元素

2021-01-21 00:06:26

vue.js语言开发

2021-06-01 06:01:35

SSO单点登录

2023-01-03 09:35:34

SpringbootStarter

2020-09-15 12:40:16

回溯算法代码回溯法

2023-02-27 09:38:36

Springbootstarter

2010-09-06 10:15:11

DB2打补丁

2021-01-08 17:18:35

前端vuevue.js

2022-08-11 07:32:51

Starter自动装配

2021-02-07 11:13:20

Windows 10Windows 10X微软

2010-01-27 13:54:52

IT电影

2021-10-20 06:47:50

Elasticsear场景引擎

2023-05-12 09:08:48

TypeScript工具类型

2015-07-30 14:20:27

面试攻略

2020-09-21 08:33:12

线程池调度Thread Pool

2021-10-04 15:34:47

智能手机功能老年人

2021-09-30 22:51:39

手机技能老年人

2021-05-28 11:30:39

物联网互联网IoT

2018-09-28 14:28:28

MySQL存储过程
点赞
收藏

51CTO技术栈公众号