Springboot自定义starter

简介: 自定义starter

 前言

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

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

源码

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

image.gif1.png

命名规则

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

image.gif2.png

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

image.gif3.png

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

image.gif4.png

来看一下用到的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;
    }
}

image.gif

接下来写自动配置类 HelloAutoConfiguration , 当容器中没有HelloService时才生效,以用户配置优先。@EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。

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

image.gif

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

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

image.gif

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

image.gif5.png

测试

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

image.gif6.png

properties文件中添加所需信息

image.gif7.png

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

image.gif8.png


相关文章
32SpringBoot自定义Starter
32SpringBoot自定义Starter
59 0
32SpringBoot自定义Starter
|
6月前
|
设计模式 Java 机器人
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
|
架构师 NoSQL Java
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
|
5月前
|
IDE Java Maven
SpringBoot自定义starter及自动配置
SpringBoot自定义starter及自动配置
|
4月前
|
Java Maven 开发者
Spring Boot中的自定义Starter开发
Spring Boot中的自定义Starter开发
|
4月前
|
Java Maven Spring
Spring Boot中的自定义Starter开发
Spring Boot中的自定义Starter开发
|
6月前
|
Java Spring 容器
SpringBoot2 | SpringBoot自定义AutoConfiguration | SpringBoot自定义starter(五)
SpringBoot2 | SpringBoot自定义AutoConfiguration | SpringBoot自定义starter(五)
47 0
|
6月前
|
Java 数据库连接 Maven
SpringBoot【付诸实践 01】SpringBoot自定义starter保姆级教程(说明+源码+配置+测试)
SpringBoot【付诸实践 01】SpringBoot自定义starter保姆级教程(说明+源码+配置+测试)
69 1
|
6月前
|
Java Maven Spring
Spring Boot - 手把手教小师妹自定义Spring Boot Starter
Spring Boot - 手把手教小师妹自定义Spring Boot Starter
107 0
|
6月前
|
运维 Java Maven
SpringBoot SPI 机制和实现自定义 starter
SpringBoot SPI 机制和实现自定义 starter
165 0