最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解SpringBoot3如何自定義starter

 更新時(shí)間:2024年09月08日 11:43:31   作者:藍(lán)染-惣右介  
在Spring Boot中,starter是一種特殊的依賴(lài),它可以幫助開(kāi)發(fā)人員快速引入和配置某個(gè)特定的功能模塊,我們?cè)诿嬖囍型ㄟ^(guò)會(huì)被問(wèn)到SpringBoot3如何自定義starter,所以本文小編給大家詳細(xì)介紹了SpringBoot3自定義starter的步驟,需要的朋友可以參考下

一、自定義starter介紹

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

Spring Boot的官方starter并不一定包含所有開(kāi)發(fā)人員所需的功能,這時(shí)候就需要自定義starter來(lái)滿(mǎn)足特定項(xiàng)目的需求。

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

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

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

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

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

常見(jiàn)的應(yīng)用場(chǎng)景:

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

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

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

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

5)微服務(wù)項(xiàng)目的每個(gè)模塊都要訪(fǎng)問(wèn)redis數(shù)據(jù)庫(kù),每個(gè)模塊都要配置redisTemplate

四、自定義starter

我們可以先參考一下MyBatis的starter,一般情況下起步依賴(lài)會(huì)由兩個(gè)工程組成,一個(gè)是xxx-autoconfigure提供自動(dòng)配置功能,另一個(gè)是xxx-starter提供依賴(lài)管理功能。同時(shí)會(huì)在starter中引入autoconfigure,將來(lái)使用者引入starter就可以了。

了解了自定義starter的套路后,我們來(lái)自定義一個(gè)MyBatis的starter。

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

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

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

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

再創(chuàng)建一個(gè)maven工程,名字叫做dmybatis-spring-boot-starter。

3、在autoconfigure的pom文件中引入MyBatis的所需依賴(lài)

首先我們觀察一下MyBatis的官方起步依賴(lài)包含哪些子依賴(lài):

  • 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依賴(lài)我們不需要引入,因?yàn)閍utoconfigure模塊由我們自定義。只需在autoconfigure的pom文件中引入其他的依賴(lài):

<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、編寫(xiě)自動(dòng)配置類(lèi)MyBatisAutoConfiguration

@AutoConfiguration  // 表識(shí)當(dāng)前類(lèi)是一個(gè)自動(dòng)配置類(lèi)
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();
        // 掃描的包:?jiǎn)?dòng)類(lèi)所在的包及其子包
        List<String> packages = AutoConfigurationPackages.get(beanFactory); // 獲取啟動(dòng)類(lèi)所在的包名
        String basePackage = packages.get(0);   // 因?yàn)閱?dòng)類(lèi)所在的包只有一個(gè),直接獲取第一個(gè)
        mapperScannerConfigurer.setBasePackage(basePackage);    // 設(shè)置mapper的包掃描路徑
        // 掃描的注解:@Mapper
        mapperScannerConfigurer.setAnnotationClass(Mapper.class);
        return mapperScannerConfigurer;
    }
}

5、編寫(xiě)imports配置文件

在autoconfigure項(xiàng)目的/resources/META-INF/spring目錄下創(chuàng)建org.springframework.boot.autoconfigure.AutoConfiguration.imports配置文件,注意存放路徑要嚴(yán)格遵循這個(gè)文件夾名和文件名,SpringBoot才會(huì)識(shí)別到配置文件。

在imports文件中,我們只需要填寫(xiě)MyBatis的自動(dòng)配置類(lèi)的全類(lèi)名即可:

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、測(cè)試自定義starter是否生效

在springboot-mybatis項(xiàng)目中,已經(jīng)配置了datasource數(shù)據(jù)源,并寫(xiě)好了后端數(shù)據(jù)訪(fǎng)問(wèn)接口。

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);
}

在項(xiàng)目的pom文件中引入自定義MyBatis的starter依賴(lài):

<!-- 自定義的mybatis起步依賴(lài) -->
<dependency>
    <groupId>com.aizen</groupId>
    <artifactId>dmybatis-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

<!--mysql驅(qū)動(dòng)依賴(lài)-->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

通過(guò)postman測(cè)試請(qǐng)求接口,成功查詢(xún)到數(shù)據(jù),說(shuō)明自定義starter已經(jīng)生效!

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

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

相關(guān)文章

最新評(píng)論

乐清市| 曲阜市| 萍乡市| 肃宁县| 洛宁县| 洛扎县| 惠水县| 南木林县| 翼城县| 绍兴县| 唐河县| 闵行区| 葫芦岛市| 松潘县| 博爱县| 嵊州市| 汉中市| 福贡县| 慈利县| 枣强县| 仁化县| 鱼台县| 宜兰县| 淮北市| 嘉义县| 涡阳县| 东安县| 武山县| 额济纳旗| 仲巴县| 通许县| 百色市| 商洛市| 乐东| 德安县| 攀枝花市| 台东县| 江山市| 获嘉县| 昭平县| 乐平市|