自定义SpringBoot Starter实现

自定义stater pom文件

引入自动配置类spring-boot-starter

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.sl.learn.starter</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

配置文件类properties

用来保存默认的配置

@ConfigurationProperties(prefix = "stater")
public class StaterProperties {

    private String code;

    private String desc;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

使用配置类

public class StaterService {

    private StaterProperties staterProperties;

    public StaterProperties getStaterProperties() {
        return staterProperties;
    }

    public void setStaterProperties(StaterProperties staterProperties) {
        this.staterProperties = staterProperties;
    }

    public String say() {
        return staterProperties.getCode() + "-" + staterProperties.getDesc();
    }
}

创建AutoConfiguration

创建一个AutoConfiguration,引用定义好的配置信息;在AutoConfiguration中实现所有starter应该完成的操作,并且把这个类加入spring.factories配置文件中进行声明。

@Configuration
@EnableConfigurationProperties(StaterProperties.class)
public class StaterAutoConfiguration {

    @Bean
    @ConditionalOnBean
    public StaterService staterService() {
        return new StaterService();
    }
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.sl.learn.config.StaterAutoConfiguration

项目结构

在这里插入图片描述

打包项目安装到Maven仓库,之后在一个SpringBoot项目中引入该项目依赖,然后就可以使用该starter了。

发布了143 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/TreeShu321/article/details/103412581