前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义springboot starter-有demo-可伸手

自定义springboot starter-有demo-可伸手

作者头像
suveng
发布2020-11-12 11:51:35
5750
发布2020-11-12 11:51:35
举报
文章被收录于专栏:分享/效率/工具/软件

自定义springboot starter

  1. 准备maven spring 环境
  2. 编写starter逻辑
  3. 抽取配置
  4. 配置spring自动装载

1.准备maven spring 环境

代码语言:javascript
复制
<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <protobuf.version>3.12.3</protobuf.version>
    <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
    <grpc.version>1.29.0</grpc.version>
    <spring-boot.version>2.2.1.RELEASE</spring-boot.version>
    <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
    <java.version>1.8</java.version>
    <protobuf.version>3.12.3</protobuf.version>
    <grpc.version>1.29.0</grpc.version>
</properties>

<dependencies>
    <!--负责从properties文件中读取配置信息-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
    </dependency>
    <!--实现自动化配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.ofpay/logback-mdc-ttl -->
    <dependency>
        <groupId>com.ofpay</groupId>
        <artifactId>logback-mdc-ttl</artifactId>
        <version>1.0.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.alibaba/transmittable-thread-local -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>transmittable-thread-local</artifactId>
        <version>2.11.5</version>
    </dependency>
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.ofpay/logback-mdc-ttl -->
        <dependency>
            <groupId>com.ofpay</groupId>
            <artifactId>logback-mdc-ttl</artifactId>
            <version>1.0.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/transmittable-thread-local -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>transmittable-thread-local</artifactId>
            <version>2.11.5</version>
        </dependency>


        <!--springcloud依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <!--springboot依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.72</version>
        </dependency>
    </dependencies>
</dependencyManagement>

2. 编写starter逻辑

git仓库: https://gitee.com/suveng/util-all/tree/b28fedd33e4c8cdf175a1c14e275c70293e1d3b1/alarm-spring-boot-starter

指定我现在提交的版本, 方便看 当然我也提交到了maven 的官方仓库中, 你也可以直接拿来用, 但是希望你经过测试才拿来用, 也可以在上面提issue 或者 通过微信直接联系我

3. 抽取配置

主要抽取starter用到的配置, 依赖项的抽象配置, 放到springboot的配置中, 让用户可以自定义配置

4. 配置spring自动装载

spring加载starter有两种方式 被动, 用户引入starter后需要加载配置才可以使用starter功能, 配置是主动开启的 主动, 用户引入starter后 即可使用starter功能, 配置是被动的, 无感知的, 当然可以通过配置属性来开关, 这个看个人的starter逻辑怎么定义

被动需要配置 resources/META-INF/spring.factories

代码语言:javascript
复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
my.suveng.alarm.config.AlarmAutoConfig

资料

springboot中starter的编写 - 简书

最详细的自定义Spring Boot Starter开发教程_码农小胖哥-CSDN博客

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义springboot starter
    • 1.准备maven spring 环境
      • 2. 编写starter逻辑
        • 3. 抽取配置
          • 4. 配置spring自动装载
            • 资料
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档