基于SpringBoot编写starter,自己写个类库引入使用
创始人
2024-04-18 13:42:13
0次

    我们在做springboot项目的时候经常会创建项目后先引入各种starter,比如操作数据库的mybatis-plus-boot-starter,数据源的druid-spring-boot-starter等等。引入starter的好处就是可以将第三方的依赖库快速的整合到我们自己的springboot项目中,只需要在.yml配置文件中编写配置就能自动创建对象实例完成操作。

1:SpringBoot将常见的开发功能,分成了不同的starter,在开发功能的时候只需要引入对应的starter,减少引入大量的依赖。

2:starter可以理解成一个依赖组,其主要功能就是完成引入依赖和初始化配置。

3:Spring官方提供的starter命名规范为spring-boot-starter-xxx,第三方提供的starter命名规范为xxx-spring-boot-starter。

快速搭建自己的starter

首先打开IDEA创建一个SpringBoot项目,项目名为:my-starter,这里Java版本选择Java1.8、注意版本不要选太高的,SpringBoot版本不要选择3.x:

初始化好项目后,在pom文件中引入核心依赖文件:

org.springframework.bootspring-boot-autoconfigureorg.springframework.bootspring-boot-configuration-processortrueorg.projectlomboklomboktrue

 spring-boot-autoconfigure用于自动加载配置

 spring-boot-configuration-processor用于自动生成配置文件的自动提示

 optional=true:默认为false,设置为true取消依赖传递,避免依赖版本冲突

而后需要把pom文件中下面这段代码给删除掉,因为这种打包方式会把springboot的内置服务器tomcat/netty打包到jar中。

org.springframework.bootspring-boot-maven-plugin

编写一个逻辑实现的类

这里创建一个LogService编写我们的功能逻辑:

public class LogService {public String logInfo(String appId) {System.out.println("打印了appId:" + appId);return appId;}
}

编写一个自动配置类

@Configuration // 这是一个配置类
//@ConfigurationProperties(prefix = "sinder") // 和配置文件绑定,映射对应属性名
public class StarterConfig {@Beanpublic LogService logService() {return new LogService();}
}

写完这个配置类后,还需要将它进行注册,创建一个配置文件:

resources/META_INF/spring.factories,将自动化配置类写到文件中,相当于给项目一个入口,编写如下代码:

# spring boot starter
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.mystarter.StarterConfig

到这里一个基本的starter就编写完毕了,执行 mvn clean install 命令,将项目打包推送到本地maven仓库,然后新建一个测试项目,引入打包好的依赖进行使用:

        com.examplemy-starter0.0.1-SNAPSHOT
        LogService logService = new LogService();System.out.println(logService.logInfo("sinder"));

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...