SpringBoot自定义Starter实现流程详解
作者:CaptainCats 发布时间:2022-05-19 07:03:25
标签:SpringBoot,自定义,Starter
starter起步依赖
starter起步依赖是springboot一种非常重要的机制,
它打包了某些场景下需要用到依赖,将其统一集成到starter,
比如,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这就是一个starter,你可以把它看做一个外部外部项目,注意:是外部项目。
starter命名规则
springboot提供的starter以spring-boot-starter-x的方式命名,
自定义starter以x-spring-boot-starter的方式命名,
以区分springboot生态提供的starter。
自定义starter
new module
mystarter-spring-boot-starter
maven项目
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
load maven changes
simplebean
package com.duohoob.bean;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* 这两个都是非@Component注解,
* 否则springboot启动时会直接被加载进spring容器
*/
@EnableAutoConfiguration
@ConfigurationProperties(prefix = "simplebean")
public class SimpleBean {
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 "SimpleBean{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
自动配置类
package com.duohoob.config;
import com.duohoob.bean.SimpleBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyAutoConfiguration {
@Bean
public SimpleBean simpleBean() {
return new SimpleBean();
}
}
META-INF\spring.factories
在resources下创建META-INF\spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.duohoob.config.MyAutoConfiguration
在spring-boot-mytest中引入mystarter-spring-boot-starter
<dependency>
<groupId>com.duohoob</groupId>
<artifactId>mystarter-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
load maven changes
添加配置
在spring-boot-mytest的src/main/resources/application.properties中添加配置
通过@Autowired引用
package com.duohoob.springbootmytest.controller;
import com.duohoob.bean.SimpleBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private SimpleBean simplebean;
@RequestMapping("/test")
public String test() {
return simplebean.toString();
}
}
启动访问
来源:https://blog.csdn.net/qq_35549286/article/details/126975665


猜你喜欢
- 前言代码库:https://gitee.com/leo825/springboot-learning-parents.git之前写过《Spr
- 将map集合存数据与取出数据全部放在一个类MapTest中,方便阅读与查看随便创建一个包,在包中新建一个class文件,(也可以不建包,直接
- BufferedImage转换为MultipartFileJava里读取图片或调整图片大小可使用BufferedImage进行操作(参考我另
- rocketmq消费者注册监听有两种模式有序消费MessageListenerOrderly和并发消费MessageListenerConc
- 一、构造方法概述构造方法是一种特殊的方法作用:创建对象Student stu = new Student();格式:pucli class
- 首先备注一下JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE
- 本文实例讲述了C#多线程学习之生产者和消费者用法。分享给大家供大家参考。具体实分析如下:前面的文章说过,每个线程都有自己的资源,但是代码区是
- 问题换了台开发机,重新安装了下开发环境。突然发现Visual Studio Code无法用来调试Unity了。明明流程都是按照Unity官方
- Feign调用服务Headers传参在使用springcloud中经常会出现个服务调用,一般情况下会在Headers加上token的验证,那
- RoomRoom主要分三个部分 database、dao和实体类entityEntityentity实体类定义时需要用到@Entity(ta
- 简介Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由
- 跟同事讨论到- 用C# Stopwatch 取得效能数值,Stopwatch.ElapsedMilliseconds 只到毫秒(ms),如果
- 异常捕获机制 C#1.示意图2.异常捕获机制,代码:3.异常捕获机制,结果:4.求几周,剩余几天?代码:5.结果:6.求几月几周零几天 设一
- 首先,我们需要增加用户对该脚本的执行权限,即 String cmdstring = "chmod a+x test.sh
- 本文实例讲述了C#检查指定对象是否存在于ArrayList集合中的方法。分享给大家供大家参考。具体分析如下:C#的ArrayList提供了一
- public class MyGestureLintener extends SimpleOnGestureListener {privat
- Unity脚本中枚举类型在inspector面板中文显示,供大家参考,具体内容如下效果:工具脚本:ChineseEnumTool.csusi
- 废话不多说了,直接给大家贴代码,具体代码如下所示://打开Excel文件,转换为DataTable DataTable dtExcel;pr
- 前言最近帮测试做了一点关于签名的需求,今天就和各位同学简单聊一聊关于签名的那些事儿。如果问到 Android 为什么需要签名?大家都可能想到
- Android 自带的资源字符串资源:定义字符串资源在 <string.xml >;在JAVA 中 使用字符串资源,通过 get