实现自定义springboot的starter

引言

学过springboot的肯定用过各种starter,通过这些starter我们可以节省很多没有必要的配置,让项目更简洁,配置起来也更简单。那么starter是怎么开发的呢?这里我通过一个简单的案例演示如何创建一个自己的starter。

初始化项目

先创建一个springboot项目,然后在pom.xml中引入如下依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
</dependency>

其中关键的就是后两个依赖,spring-boot-autoconfigure 用于加载配置,spring-boot-configuration-processor 用于生成配置文件的自动提示。

然后需要删除pom.xml中的build部分(可能不完全一样,直接把build都删了就行):

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

然后可以把项目中没用的文件和文件夹删掉,如test、XXXApplication.java启动类等:

image-20221217183927759

项目初始化就算完成了;

具体stater内容编写

下面编写具体starter内容,这里我用一个简单的hello案例演示;

首先编写一个用来读取配置的配置类:

@Configuration
@ConfigurationProperties("yang.hello")
@Data
@ComponentScan
public class HelloStarterConfig {

    private String username;

    @Bean
    public String sayHello() {
        return username + "向你问好";
    }
}

代码不难,主要是了解这其中注解是什么意思;

@ConfigurationProperties注解作用是和配置文件(一般是 application.yml)进行绑定,将配置文件中对应的配置映射到对象的属性中。这里就是yang.hello.username就可以在application.yml文件中配置。

比如mysql数据库的配置类就是这样:

image-20221218085505726

配置类写好后,在resources下创建文件夹META_INF,并创建文件spring.factories:

image-20221218085942057

然后在该文件种编写如下配置:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.yang.hellostarter.HelloStarterConfig

这就把刚才写的配置类给关联了起来,就是类似一个启动类的作用;

这样一个简单的starter就完成了,然后通过maven插件install下来;

image-20221218090257387

然后这个starter就在你的本地maven仓库中了,可以调用测试一下:

引入依赖:

image-20221218090352538

image-20221218090417480

application.yml种可以配置:

image-20221218090501563

image-20221218090538459

然后在测试类测试一下:

image-20221218090650255

image-20221218090712121

运行结果:image-20221218090747036


这就是starter开发流程了,这只是一个简单案例,实际应用可以更灵活复杂点,但是大致步骤就是这样,也可以尝试把自己常用的一些工具类封装成自己的starter方便调用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YXXYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值