Springboot自定义starter

前言

在了解Springboot的自动配置原理后,就可以来实现自定义starter,不懂的可以看该系列之前的文章

除此之外还需要知道为什么要去自定义starter,在我们的日常开发工作中,经常会有一些独立于业务之外的配置模块,我们经常将其放到一个特定的包下,然后如果另一个工程需要复用这块功能的时候,需要将代码硬拷贝到另一个工程,重新集成一遍,麻烦至极。如果我们将这些可独立于业务代码之外的功配置模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配。

源码

首先创建一个空项目,在该项目下创建两个模块

 命名规则

SpringBoot提供的starter以spring-boot-starter-xxx的方式命名的。官方建议自定义的starter使用xxx-spring-boot-starter命名规则。以区分SpringBoot生态提供的starter。

 首先在启动器模块的pom文件中添加自动配置模块的依赖,这样别的项目需要使用时只需要引入该启动器即可。

在自动配置模块的pom中只需要留下web场景启动器即可,启动类也可以删掉,然后写个用于后面测试的service

来看一下用到的PropertiesBean, 以com.lonewalker为前缀,这样就可以从properties文件中取值。

@ConfigurationProperties(prefix = "com.lonewalker")
public class PropertiesBean {

    private String prefix;

    private String suffix;

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

    public String getSuffix() {
        return suffix;
    }

    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }
}

接下来写自动配置类 HelloAutoConfiguration , 当容器中没有HelloService时才生效,以用户配置优先

@EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。

@Configuration
@ConditionalOnMissingBean(HelloService.class)
@EnableConfigurationProperties(PropertiesBean.class)
public class HelloAutoConfiguration {
    @Bean
    public HelloService helloService(){
        return new HelloService();
    }
}

还有很重要的一步,新建META-INF文件,在该文件下新建spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.lonewalker.lonewalkerhellospringbootautoconfiguer.auto.HelloAutoConfiguration

大功告成,把两个模块都install一下

测试

新建test项目,在pom文件中加入自定义starter信息

properties文件中添加所需信息

直接在测试类测试吧,完美

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LoneWalker、

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值