Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >手写一个简单的SpringBoot Starter

手写一个简单的SpringBoot Starter

原创
作者头像
zhaozhen
修改于 2021-06-21 02:33:31
修改于 2021-06-21 02:33:31
4780
举报

现在各种自定义的starter屡见不鲜,也许就需要自己来自定义一个starter了。学习一下starter的构建必备

## starter-定义

首先需要自顶一个配置bean

```

package com.zhao.starter;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.context.properties.EnableConfigurationProperties;

@EnableConfigurationProperties(StarterBean.class)

@ConfigurationProperties(prefix = "starterbean")

public class StarterBean {

private String id;

private String name;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return "StarterBean{" +

"id='" + id + '\'' +

", name='" + name + '\'' +

'}';

}

}

```

然后需要通过Springboot自动注入的注解,以及Spring spi 的spring.factories将配置bean加入自动配置的管理

```

@Configuration

@ConditionalOnClass

public class StartBeanAutoConfiguration {

static {

System.out.println("custom auto configuration init ");

}

@Bean

public StarterBean starterBean(){

return new StarterBean();

}

}

```

资源目录下新建META-INF文件夹下spring.factories文件,

```

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zhao.starter.StartBeanAutoConfiguration

```

pom文件

```

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.zhao</groupId>

<artifactId>starter-demo</artifactId>

<version>1.0-SNAPSHOT</version>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-autoconfigure</artifactId>

<version>2.2.2.RELEASE</version>

</dependency>

</dependencies>

</project>

```

使用maven install之后就可以在新建项目时使用了。

## starter使用测试

pom定义

```

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.zhao</groupId>

<artifactId>starter-use-demo</artifactId>

<version>1.0-SNAPSHOT</version>

<dependencies>

<dependency>

<groupId>com.zhao</groupId>

<artifactId>starter-demo</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>2.2.2.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<version>2.2.2.RELEASE</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

```

启动类

```

@SpringBootApplication

public class StarterUseApplication {

public static void main(String[] args) {

SpringApplication.run(StarterUseApplication.class,args);

}

}

```

配置starter需要的bean的配置

```

starterbean.id=test123

starterbean.name=zhaozhen

```

测试类

```

@RunWith(SpringRunner.class)

@SpringBootTest(classes = StarterUseApplication.class)

public class StarterUseTest {

@Autowired

StarterBean starterBean;

@Test

public void starUse(){

System.out.println(starterBean);

}

}

```

测试结果,正常使用

![file](http://cdn.kobefan.cn/FgWI2Sss98A9jDw0_Pu4GWE4kTYR)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
springboot自定义starter
第一步:创建starter工程hello-spring-boot-starter并配置pom.xml文件
无敌小菜鸟
2022/02/23
8320
springboot自定义starter
SpringBoot自定义starter
mybatis-spring-boot-starter;自定义启动器名-spring-boot-starter
程序员阿杜
2021/03/16
4440
springboot之自定义starter
3、在该工程中点击+,选择new module,新建一个Spring Initializr工程
西西嘛呦
2020/08/26
3990
springboot之自定义starter
01_分布式电商系统搭建dubbo+zk+SpringBoot
编写接口和存放相关的bean。也可以把bean放到common-util 这个要看个人怎么搭建项目架构.user-web。依赖api接口,不就把bean一起了。
全栈程序员站长
2022/06/30
3300
【SpringBoot】SpringBoot基础-HelloWord实例
SpringBoot的简介我就不写一个篇章来介绍了,相信大家搜索一下,网上一大堆。
谙忆
2021/01/21
3830
【SpringBoot】SpringBoot基础-HelloWord实例
SpringBoot图文教程16—SpringBoot 多模块开发「web」「打包」
什么是多模块开发?如图所示,项目中每一个包对应都是一个完整的项目,在IDEA中称之为模块,每一个模块都有完整的项目结构:独立的pom文件,独立的配置文件,独立的编译文件输出模块等等。
鹿老师的Java笔记
2020/03/30
2.2K0
springBoot快速入门
给maven 的settings.xml配置文件的profiles标签添加 <profile> <id>jdk‐1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source>
HUC思梦
2020/09/03
3980
springBoot快速入门
初识springcloud
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。
后端码匠
2021/08/18
4770
java之springboot之快速入门(一)- maven方式创建项目
Application类是应用启动类,注意此类要放在package下面,这里是放在com.vincent.demo1包下,如果直接放在java目录下,之后启动时会 报Application run failed。
Vincent-yuan
2020/10/27
8250
java之springboot之快速入门(一)- maven方式创建项目
【微服务】Nacos实现服务间的调用 后端程序猿必经之路
之前的文章讲诉了Nacos的具体功能,那么有了理论肯定是不够的,这一次我们来利用Nacos实现简单的服务之间简单的调用,对于Nacos不是很了解可以先去看看 【微服务】 Nacos的入门级使用 后端程序猿必经之路。 话不多说,开整开整
小王不头秃
2024/06/19
1.6K0
【微服务】Nacos实现服务间的调用 后端程序猿必经之路
微服务(二)——SpringCloud入门&项目搭建
SpringCloud:分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶
不愿意做鱼的小鲸鱼
2022/09/26
9850
微服务(二)——SpringCloud入门&项目搭建
SpringCloud 微服务搭建
Maven 中的 dependencyManagement 和 dependencies
OY
2022/03/17
1.1K0
SpringCloud 微服务搭建
SpringCloud 2.x学习笔记:11、断路器聚合监控(Hystrix Turbine)(Greenwich版本)
参考 英文原文:https://stackabuse.com/spring-cloud-turbine/ 中文版:https://www.jb51.net/article/162726.htm
程裕强
2019/07/02
5390
SpringCloud 2.x学习笔记:11、断路器聚合监控(Hystrix Turbine)(Greenwich版本)
Springboot 系列(十五)如何编写自己的 Springboot starter
Springboot 中的自动配置确实方便,减少了我们开发上的复杂性,那么自动配置原理是什么呢?之前我也写过了一篇文章进行了分析。 Springboot 系列(三)Spring Boot 自动配置。
未读代码
2019/11/04
4K0
SpringCloud 2.x学习笔记:17、Spring Cloud Gateway之服务注册与发现(Greenwich版本)完整代码
一共三个模块,服务注册模块eureka-server、服务提供模块service-hello和网关模块service-gateway。
程裕强
2019/07/02
4270
SpringCloud 2.x学习笔记:17、Spring Cloud Gateway之服务注册与发现(Greenwich版本)完整代码
SpringBoot+Dubbo+Nacos 开发实战教程
本文来写个详细的例子来说下dubbo+nacos+Spring Boot开发实战。本文不会讲述太多的理论的知识,会写一个最简单的例子来说明dubbo如何与nacos整合,快速搭建开发环境。
田维常
2022/11/25
1.2K0
SpringBoot+Dubbo+Nacos 开发实战教程
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)基础入门篇 ---- 搭建环境
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
百思不得小赵
2022/12/01
1.6K0
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)基础入门篇 ---- 搭建环境
springboot之第一个springboot程序
idea会为我们对Bean进行标识,我们启动服务:点击run "HelloWorldMainApp"
西西嘛呦
2020/08/26
2700
springboot之第一个springboot程序
SpringCloud 初步构建
Maven使用dependencyManagement元素来提供了一种管理依赖版本号的方式。
用户9615083
2022/12/25
6570
SpringCloud 初步构建
Spring Boot 自定义 starter
SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能。即使是这样,springboot也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使用。
程序员果果
2019/05/15
7980
推荐阅读
相关推荐
springboot自定义starter
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档