Spring Boot系列七 实现自己的spring boot starter工程

1. 概述

spring boot starter工程对于使用者是非常方便的,使用者通常只要在pom.xml引入starter的jar,则此工程依赖的类,就全部自动引入。因此我们常用的开源组件都会提供一个starter工程给开发者,让开发者非常方便集成本组件到spring中。本文通过自己实现一个简单的demo,详细说明了如何实现一个自己的spring boot starter工程。

2. 例子中工程说明

本文demo参考mybatis-spring-boot-starter和网上的文章创建自己的start工程。

定义我们自己的spring boot starter工程,通常需要以下4个工程:

  1. 模块的真正的实现类,如本文的工程为first
  2. *-spring-boot/*-spring的工程:此工程是*-spring-boot-autoconfigure和*-spring-boot-starter的父工程类。本例子里是first-spring-boot。此工程的命名规则如下:如果你在这个工程中引入spring依赖,则工程名称为*-spring,如果引入spring-boot依赖,则工程名称为*-spring-boot。
  3. *-spring-boot-autoconfigure工程:配置自动配置类,本例的名称first-spring-boot-autoconfigure
  4. *-spring-boot-starter工程:空工程类,在pom.xml中定义需要引入jar,本例的名称first-spring-boot-starter

测试工程:

  • test-main:演示如何使用自己的first-spring-boot-starter

例子的功能说明:

  • 定义ITestService接口和此接口的两个实现类,根据我们的配置,程序自动初始化指定的一个类。

3. first工程

此工程中不要引入扫描相关的注解,如@Autowire, @Componet, @Service, @Control等等; 不要引入spring 相关的类

本工程功能功能: 定义ITestService接口和此接口的两个实现类

定义ITestService接口

public interface ITestService {

    String queryById(String id);
}

此接口的两个实现类

  • TestServiceImpl
public class TestServiceImpl implements ITestService {
   
    @Override
    public String queryById(String id) {
        return id + ":" + this.getClass().getSimpleName() ;
    }

}
  • TestServiceBackImpl
public class TestServiceBackImpl implements ITestService {
   

    @Override
    public String queryById(String id) {
        return id + ":" + this.getClass().getSimpleName() ;
    }
}

4. first-spring-boot

此工程中也不要引入扫描相关的注解,如@Autowire, @componet, @Service, @Controller等等
此类可以添加自己的类,这些类需要使用到spring-boot里的类。我们的例子里不需要添加和spring-boot相关的类,所有此工程没有java类。

这个工程主要定义子模块的需要用到的jar

4.1. pom.xml

定义版本信息和属性值,packaging值为pom

   <artifactId>first-spring-boot</artifactId>
    <groupId>com.hry.spring.first</groupId>
    <version>1.0.0-SNAPSHOT</version>
    <modelVersion>4.0.0</modelVersion>
    <!-- 类型为pom -->
    <packaging>pom</packaging>

    <properties>
        <first.version>1.0.0-SNAPSHOT</first.version>
        <spring-boot.version>1.5.6.RELEASE</spring-boot.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

定义两个子模块

 <modules>
     <module>../first-spring-boot-autoconfigure</module>
     <module>../first-spring-boot-starter
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值