当前位置: 代码网 > it编程>编程语言>Java > 一文详解SpringBoot3如何自定义starter

一文详解SpringBoot3如何自定义starter

2024年09月08日 Java 我要评论
一、自定义starter介绍在spring boot中,starter是一种特殊的依赖,它可以帮助开发人员快速引入和配置某个特定的功能模块。spring boot的官方starter并不一定包含所有开

一、自定义starter介绍

在spring boot中,starter是一种特殊的依赖,它可以帮助开发人员快速引入和配置某个特定的功能模块。

spring boot的官方starter并不一定包含所有开发人员所需的功能,这时候就需要自定义starter来满足特定项目的需求。

自定义starter是一种自包含的、可重用的模块,它封装了一组特定功能的依赖和配置,并提供了简化配置的方式。通过自定义starter,开发人员可以将一些常用的功能封装起来,使得在其他项目中引入这些功能变得更加简单和方便。

二、自定义starter的好处及优势

特点及优势说明
模块化自定义starter可以将特定的功能模块化,使得开发人员可以更方便地管理和维护代码。
简化配置通过自定义starter,开发人员可以简化配置,减少重复的配置工作,提高开发效率。
提高代码重用性自定义starter可以封装一组特定功能的依赖和配置,使得在其他项目中引入这些功能变得更加简单和方便,从而提高代码重用性。
自定义功能如果spring boot的官方starter不能满足项目的需求,那么自定义starter就可以发挥重要作用。开发人员可以根据项目需求自定义starter,从而实现一些特定的功能。

三、自定义starter应用场景

在我们的日常开发工作中,可能会需要开发一个通用模块,以供其它工程复用。springboot就为我们提供这样的功能机制,我们可以把我们的通用模块封装成一个个starter,这样其它工程复用的时候只需要在pom中引用依赖即可,由springboot为我们完成自动装配。

常见的应用场景:

1)通用模块-短信发送模块

2)基于aop技术实现日志切面

3)分布式雪花id,long转string,解决精度问题

4)微服务项目的数据库连接池配置

5)微服务项目的每个模块都要访问redis数据库,每个模块都要配置redistemplate

四、自定义starter

我们可以先参考一下mybatis的starter,一般情况下起步依赖会由两个工程组成,一个是xxx-autoconfigure提供自动配置功能,另一个是xxx-starter提供依赖管理功能。同时会在starter中引入autoconfigure,将来使用者引入starter就可以了。

了解了自定义starter的套路后,我们来自定义一个mybatis的starter。

1、创建autoconfigure的maven工程

创建一个maven工程,名字叫做dmybatis-spring-boot-autoconfigure,前面加d是为了和mybatis官方的起步依赖区分开。

注意命名规范:springboot官方提供的starter一般以spring-boot-starter-xxxx方式命名,官方建议自定义的starter使用xxxx-spring-boot-starter命名。用来区分第三方的starter和springboot官方的starter。

2、创建starter的maven工程

再创建一个maven工程,名字叫做dmybatis-spring-boot-starter。

3、在autoconfigure的pom文件中引入mybatis的所需依赖

首先我们观察一下mybatis的官方起步依赖包含哪些子依赖:

  • org.springframework.boot:spring-boot-starter:3.3.3
  • org.springframework.boot:spring-boot-starter-jdbc:3.3.3
  • org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:3.0.3
  • org.mybatis:mybatis:3.5.14
  • org.mybatis:mybatis-spring:3.0.3

其中org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:3.0.3依赖我们不需要引入,因为autoconfigure模块由我们自定义。只需在autoconfigure的pom文件中引入其他的依赖:

<dependencies>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter</artifactid>
    <version>3.3.3</version>
  </dependency>

  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-jdbc</artifactid>
    <version>3.3.3</version>
  </dependency>

  <dependency>
    <groupid>org.mybatis</groupid>
    <artifactid>mybatis</artifactid>
    <version>3.5.14</version>
  </dependency>

  <dependency>
    <groupid>org.mybatis</groupid>
    <artifactid>mybatis-spring</artifactid>
    <version>3.0.3</version>
  </dependency>
</dependencies>

4、编写自动配置类mybatisautoconfiguration

@autoconfiguration  // 表识当前类是一个自动配置类
public class mybatisautoconfiguration {
    // sqlsessionfactorybean
    @bean
    public sqlsessionfactorybean sqlsessionfactorybean(datasource datasource) {
        sqlsessionfactorybean sqlsessionfactorybean = new sqlsessionfactorybean();
        sqlsessionfactorybean.setdatasource(datasource);
        return sqlsessionfactorybean;
    }

    // mapperscannerconfigurer
    @bean
    public mapperscannerconfigurer mapperscannerconfigurer(beanfactory beanfactory) {
        mapperscannerconfigurer mapperscannerconfigurer = new mapperscannerconfigurer();
        // 扫描的包:启动类所在的包及其子包
        list<string> packages = autoconfigurationpackages.get(beanfactory); // 获取启动类所在的包名
        string basepackage = packages.get(0);   // 因为启动类所在的包只有一个,直接获取第一个
        mapperscannerconfigurer.setbasepackage(basepackage);    // 设置mapper的包扫描路径
        // 扫描的注解:@mapper
        mapperscannerconfigurer.setannotationclass(mapper.class);
        return mapperscannerconfigurer;
    }
}

5、编写imports配置文件

在autoconfigure项目的/resources/meta-inf/spring目录下创建org.springframework.boot.autoconfigure.autoconfiguration.imports配置文件,注意存放路径要严格遵循这个文件夹名和文件名,springboot才会识别到配置文件。

在imports文件中,我们只需要填写mybatis的自动配置类的全类名即可:

com.aizen.config.mybatisautoconfiguration

6、在starter的pom文件中引入autoconfigure的文件

<dependencies>
  <dependency>
    <groupid>com.aizen</groupid>
    <artifactid>dmybatis-spring-boot-autoconfigure</artifactid>
    <version>1.0-snapshot</version>
  </dependency>
</dependencies>

7、测试自定义starter是否生效

在springboot-mybatis项目中,已经配置了datasource数据源,并写好了后端数据访问接口。

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.driver
    url: jdbc:mysql://localhost:3306/mybatis
    username: root
    password: root
@mapper
public interface usermapper {
    @select("select * from user where id = #{id}")
    user findbyid(integer id);
}

在项目的pom文件中引入自定义mybatis的starter依赖:

<!-- 自定义的mybatis起步依赖 -->
<dependency>
    <groupid>com.aizen</groupid>
    <artifactid>dmybatis-spring-boot-starter</artifactid>
    <version>1.0-snapshot</version>
</dependency>

<!--mysql驱动依赖-->
<dependency>
    <groupid>com.mysql</groupid>
    <artifactid>mysql-connector-j</artifactid>
</dependency>

通过postman测试请求接口,成功查询到数据,说明自定义starter已经生效!

从提供的mybatis自定义starter结构可以看出,starter就是一个普通的maven项目,引入了需要配置的模块后,帮用户写好接入spring需要的配置操作,再进行一次封装。用户就可以省去配置的过程,做到引入就自动配置。

以上就是一文详解springboot3如何自定义starter的详细内容,更多关于springboot3自定义starter的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com