欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文詳解SpringBoot3如何自定義starter

 更新時間:2024年09月08日 11:43:31   作者:藍染-惣右介  
在Spring Boot中,starter是一種特殊的依賴,它可以幫助開發(fā)人員快速引入和配置某個特定的功能模塊,我們在面試中通過會被問到SpringBoot3如何自定義starter,所以本文小編給大家詳細介紹了SpringBoot3自定義starter的步驟,需要的朋友可以參考下

一、自定義starter介紹

在Spring Boot中,starter是一種特殊的依賴,它可以幫助開發(fā)人員快速引入和配置某個特定的功能模塊。

Spring Boot的官方starter并不一定包含所有開發(fā)人員所需的功能,這時候就需要自定義starter來滿足特定項目的需求。

自定義starter是一種自包含的、可重用的模塊,它封裝了一組特定功能的依賴和配置,并提供了簡化配置的方式。通過自定義starter,開發(fā)人員可以將一些常用的功能封裝起來,使得在其他項目中引入這些功能變得更加簡單和方便。

二、自定義Starter的好處及優(yōu)勢

特點及優(yōu)勢說明
模塊化自定義Starter可以將特定的功能模塊化,使得開發(fā)人員可以更方便地管理和維護代碼。
簡化配置通過自定義Starter,開發(fā)人員可以簡化配置,減少重復(fù)的配置工作,提高開發(fā)效率。
提高代碼重用性自定義Starter可以封裝一組特定功能的依賴和配置,使得在其他項目中引入這些功能變得更加簡單和方便,從而提高代碼重用性。
自定義功能如果Spring Boot的官方Starter不能滿足項目的需求,那么自定義Starter就可以發(fā)揮重要作用。開發(fā)人員可以根據(jù)項目需求自定義Starter,從而實現(xiàn)一些特定的功能。

三、自定義starter應(yīng)用場景

在我們的日常開發(fā)工作中,可能會需要開發(fā)一個通用模塊,以供其它工程復(fù)用。SpringBoot就為我們提供這樣的功能機制,我們可以把我們的通用模塊封裝成一個個starter,這樣其它工程復(fù)用的時候只需要在pom中引用依賴即可,由SpringBoot為我們完成自動裝配。

常見的應(yīng)用場景:

1)通用模塊-短信發(fā)送模塊

2)基于AOP技術(shù)實現(xiàn)日志切面

3)分布式雪花ID,Long轉(zhuǎn)String,解決精度問題

4)微服務(wù)項目的數(shù)據(jù)庫連接池配置

5)微服務(wù)項目的每個模塊都要訪問redis數(shù)據(jù)庫,每個模塊都要配置redisTemplate

四、自定義starter

我們可以先參考一下MyBatis的starter,一般情況下起步依賴會由兩個工程組成,一個是xxx-autoconfigure提供自動配置功能,另一個是xxx-starter提供依賴管理功能。同時會在starter中引入autoconfigure,將來使用者引入starter就可以了。

了解了自定義starter的套路后,我們來自定義一個MyBatis的starter。

1、創(chuàng)建autoconfigure的maven工程

創(chuàng)建一個maven工程,名字叫做dmybatis-spring-boot-autoconfigure,前面加d是為了和MyBatis官方的起步依賴區(qū)分開。

注意命名規(guī)范:springboot官方提供的starter一般以spring-boot-starter-xxxx方式命名,官方建議自定義的starter使用xxxx-spring-boot-starter命名。用來區(qū)分第三方的starter和springboot官方的starter。

2、創(chuàng)建starter的maven工程

再創(chuàng)建一個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  // 表識當(dāng)前類是一個自動配置類
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);    // 設(shè)置mapper的包掃描路徑
        // 掃描的注解:@Mapper
        mapperScannerConfigurer.setAnnotationClass(Mapper.class);
        return mapperScannerConfigurer;
    }
}

5、編寫imports配置文件

在autoconfigure項目的/resources/META-INF/spring目錄下創(chuàng)建org.springframework.boot.autoconfigure.AutoConfiguration.imports配置文件,注意存放路徑要嚴(yán)格遵循這個文件夾名和文件名,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項目中,已經(jīng)配置了datasource數(shù)據(jù)源,并寫好了后端數(shù)據(jù)訪問接口。

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驅(qū)動依賴-->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

通過postman測試請求接口,成功查詢到數(shù)據(jù),說明自定義starter已經(jīng)生效!

從提供的MyBatis自定義starter結(jié)構(gòu)可以看出,starter就是一個普通的maven項目,引入了需要配置的模塊后,幫用戶寫好接入Spring需要的配置操作,再進行一次封裝。用戶就可以省去配置的過程,做到引入就自動配置。

以上就是一文詳解SpringBoot3如何自定義starter的詳細內(nèi)容,更多關(guān)于SpringBoot3自定義starter的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java數(shù)組的擴容代碼示例

    Java數(shù)組的擴容代碼示例

    這篇文章主要介紹了Java數(shù)組的擴容,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2017-09-09
  • java?-jar命令詳解之運行JAR文件、傳遞參數(shù)與性能調(diào)優(yōu)

    java?-jar命令詳解之運行JAR文件、傳遞參數(shù)與性能調(diào)優(yōu)

    這篇文章主要介紹了java?-jar命令詳解之運行JAR文件、傳遞參數(shù)與性能調(diào)優(yōu)的相關(guān)資料,java?-jar命令用于運行可執(zhí)行的JAR文件,它解析JAR文件中的META-INF/MANIFEST.MF文件來確定主類,并執(zhí)行該類的?main方法,運行時可通過參數(shù)傳遞給主類,需要的朋友可以參考下
    2025-04-04
  • SpringIOC控制反轉(zhuǎn)的原理詳解

    SpringIOC控制反轉(zhuǎn)的原理詳解

    這篇文章主要介紹了SpringIOC控制反轉(zhuǎn)的原理詳解,本來管理業(yè)務(wù)對象(bean)的操作是由我們程序員去做的,但是有了?Spring?核心容器后,這些?Bean?對象的創(chuàng)建和管理交給我們Spring容器去做了,也就是控制權(quán)由程序員變成了容器,需要的朋友可以參考下
    2023-08-08
  • SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式

    SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式

    這篇文章主要介紹了SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • SpringBoot項目中org.junit.jupiter.api.Test報錯問題及解決

    SpringBoot項目中org.junit.jupiter.api.Test報錯問題及解決

    這篇文章主要介紹了SpringBoot項目中org.junit.jupiter.api.Test報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring Boot與Spark、Cassandra系統(tǒng)集成開發(fā)示例

    Spring Boot與Spark、Cassandra系統(tǒng)集成開發(fā)示例

    本文演示以Spark作為分析引擎,Cassandra作為數(shù)據(jù)存儲,而使用Spring Boot來開發(fā)驅(qū)動程序的示例。對spring boot 與spark cassandra集成開發(fā)示例代碼感興趣的朋友跟著腳本之家小編一起學(xué)習(xí)吧
    2018-02-02
  • 基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn)

    基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn)

    這篇文章主要介紹了基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java并發(fā)編程——volatile關(guān)鍵字

    Java并發(fā)編程——volatile關(guān)鍵字

    這篇文章主要介紹了Java并發(fā)編程——volatile關(guān)鍵字的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java并發(fā)編程,感興趣的朋友可以了解下
    2020-10-10
  • Java排序算法之歸并排序簡單實現(xiàn)

    Java排序算法之歸并排序簡單實現(xiàn)

    這篇文章主要介紹了Java排序算法之歸并排序簡單實現(xiàn),具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java8?LocalDateTime時間日期類使用實例詳解

    Java8?LocalDateTime時間日期類使用實例詳解

    本文從 LocalDateTime 類的創(chuàng)建、轉(zhuǎn)換、格式化與解析、計算與比較以及其他操作幾個方面詳細介紹了 LocalDateTime 類在 Java 8 中的使用,感興趣的朋友跟隨小編一起看看吧
    2024-03-03

最新評論