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

詳解SpringBoot中自定義starter的開發(fā)與使用

 更新時間:2023年09月04日 15:13:41   作者:JK凱  
starter是SpringBoot中非常重要的一個機(jī)制,他是基于約定優(yōu)于配置的思想所衍生出來的,本文主要介紹了SpringBoot中自定義starter的開發(fā)與使用,感興趣的可以了解下

開發(fā)公司業(yè)務(wù)時,如何去封裝公共通用的代碼,常見的選擇是工具類之類,但是如果我們又需要在其他項目中使用呢?工具類復(fù)制一份過去?還有就是定義成單獨(dú)的模塊,也很好,但其實有個更好的選擇是使用自定義starter,自定義的starter在使用起來會非常方便,這篇文章主要講講如何自定義starter,大家可以基于此去封裝公司中的一些公共代碼。

介紹 starter

starterSpringBoot中非常重要的一個機(jī)制,他是基于約定優(yōu)于配置的思想所衍生出來的,摒棄了以前像Spring中需要使用一個依賴,需要添加非常多的配置,starter會在引入依賴時自動掃描需要加載的默認(rèn)模塊及配置,發(fā)現(xiàn)我們所定義的Bean并自動注冊到IOC容器中。

一、創(chuàng)建 SpringBoot 項目并引入依賴

命名規(guī)范

  • SpringBoot官方的starter命名規(guī)范為:spring-boot-starter-{name}
  • 自定義starter命名規(guī)范為:{name}-spring-boot-starter

首先通過IDEA創(chuàng)建一個SpringBoot項目。

這里我通過一個簡單的日志功能來實現(xiàn)自定義starter功能,創(chuàng)建一個mylog-spring-boot-starter項目。對應(yīng)的pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.15</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jk</groupId>
    <artifactId>mylog-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mylog-spring-boot-starter</name>
    <description>mylog-spring-boot-starter</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
        </dependency>
    </dependencies>
</project>

引入的依賴:

  • spring-boot-autoconfigure:這個依賴是實現(xiàn)自動配置的核心依賴,它會根據(jù)定義的META-INF/spring.factories里面定義的類全路徑去找到這個類,然后根據(jù)@Bean注解所描述的方法注冊BeanIOC容器中。
  • spring-boot-configuration-processor:這個依賴是為了實現(xiàn)在application.yml中定義配置時的提示功能。
  • lombok:實現(xiàn)類中自動補(bǔ)全gettersetter、構(gòu)造器等方法。

二、定義核心的 Service

這個service即在業(yè)務(wù)項目引入這個starter時可以自動裝配的類。

service.MyLogService:

import lombok.Data;
@Data
public class MyLogService {
    private String prefix;
    private String suffix;
    public void print(String log) {
        System.out.println(prefix + " " + log + " " + suffix);
    }
}

定義了一個print方法,實現(xiàn)日志的打印,日志的前綴和后綴我們會在后面的Properties中定義一個默認(rèn)的,也可以通過在引入這個starter的業(yè)務(wù)模塊中通過配置文件修改。

三、定義 Properties

定義Properties類來實現(xiàn)JavaConfig功能,把application.ymlapplication.properties中的配置讀取映射到Java類上。

config.MyLogProperties:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@ConfigurationProperties(prefix = "mylog")
public class MyLogProperties {
    private String prefix = "myPrefix";
    private String suffix = "mySuffix";
}
  • @Data:通過這個lombok的注解實現(xiàn)類的setter、getter、構(gòu)造器方法的自動補(bǔ)全。
  • @ConfigurationProperties:通過這個注解實現(xiàn)類與配置文件的綁定和值的注入,通過prefix可以定義在配置文件中的統(tǒng)一前綴。比如配置文件中mylog.prefix的值就會綁定到類中prefix屬性上。

四、定義 AutoConfiguration

定義AutoConfiguration類,引入starter時,會自動配置的類,它會自動注冊里面的@Beanspring中IOC容器中。

config.MyLogAutoConfiguration:

import com.jk.mylogspringbootstarter.service.MyLogService;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(MyLogProperties.class)
public class MyLogAutoConfiguration {
    @Bean
    public MyLogService demoModule(MyLogProperties properties) {
        MyLogService myLogService = new MyLogService();
        myLogService.setPrefix(properties.getPrefix());
        myLogService.setSuffix(properties.getSuffix());
        return myLogService;
    }
}
  • @Configuration:表明這是SpringBoot中的配置類。
  • @EnableConfigurationProperties:使我們之前定義的Properties生效。
  • @Bean:引入starter時自動注冊的Bean。

五、定義 spring.factory

resources中創(chuàng)建META-INF目錄并創(chuàng)建spring.factories文件。寫入以下內(nèi)容:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.jk.mylogspringbootstarter.config.MyLogAutoConfiguration

上面這行內(nèi)容固定,表示自動配置的類路徑,下面需寫我們之前定義的AutoConfiguration的全路徑。

到此我們自定義starter源代碼部分就完成了,整體的代碼結(jié)構(gòu)如下:

六、打包 starter,并在項目中測試

IDEA中通過maven install在進(jìn)行打包

或者通過在命令行中執(zhí)行mvn clear install來進(jìn)行打包,打包后會把這個依賴包安裝到我們本地maven倉庫。

在業(yè)務(wù)項目中:

1. pom中引入對應(yīng)的starter

<dependency>
    <groupId>com.jk</groupId>
    <artifactId>mylog-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

2. 自動裝配在starter中定義的MyLogService

3. 日志打印結(jié)果

可以看到日志的前綴和后綴為之前我們在Properties中定義的默認(rèn)值。

4. 修改日志前綴、后綴配置

通過在業(yè)務(wù)項目中application.yml修改前綴和后綴

測試打印結(jié)果如下:

到此這篇關(guān)于詳解SpringBoot中自定義starter的開發(fā)與使用的文章就介紹到這了,更多相關(guān)SpringBoot自定義starter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SSH框架網(wǎng)上商城項目第27戰(zhàn)之申請域名空間和項目部署及發(fā)布

    SSH框架網(wǎng)上商城項目第27戰(zhàn)之申請域名空間和項目部署及發(fā)布

    這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項目第26戰(zhàn)之申請域名空間和項目部署及發(fā)布,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題

    關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題

    這篇文章主要介紹了關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java使用正則表達(dá)式判斷郵箱格式是否正確的方法

    java使用正則表達(dá)式判斷郵箱格式是否正確的方法

    這篇文章主要介紹了java使用正則表達(dá)式判斷郵箱格式是否正確的方法,涉及java正則表達(dá)式及字符串的相關(guān)操作技巧,需要的朋友可以參考下
    2015-07-07
  • 使用Java讀取Excel文件內(nèi)容的三種方法

    使用Java讀取Excel文件內(nèi)容的三種方法

    在日常開發(fā)中,我們常常需要讀取Excel文件中的數(shù)據(jù)進(jìn)行進(jìn)一步處理,無論是批量導(dǎo)入數(shù)據(jù)、統(tǒng)計分析,還是自動化表格處理,Java都可以提供高效、穩(wěn)定的讀取方式,本文將介紹如何使用 Spire.XLS for Java 讀取Excel文件中的內(nèi)容,需要的朋友可以參考下
    2025-12-12
  • Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案

    Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案

    這篇文章主要介紹了Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java中基于物理屬性和內(nèi)容校驗比較兩個文件是否一致

    Java中基于物理屬性和內(nèi)容校驗比較兩個文件是否一致

    這篇文章主要介紹了Java中基于物理屬性和內(nèi)容校驗比較兩個文件是否一致,當(dāng)一個文件經(jīng)過哈希函數(shù)處理后,會得到一個唯一代表其內(nèi)容的哈希值,如果這個文件被篡改,哈希值也會發(fā)生改變,通過比較文件的哈希值,可以輕松地驗證文件的完整性和一致性,需要的朋友可以參考下
    2025-10-10
  • TCC分布式事務(wù)七種異常情況小結(jié)

    TCC分布式事務(wù)七種異常情況小結(jié)

    這篇文章主要為大家詳細(xì)介紹了在整個TCC模型過程中可能會出現(xiàn)的七種異常情況,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • Struts 2中的constant配置詳解

    Struts 2中的constant配置詳解

    通過對這些屬性的配置,可以改變Struts 2 框架的一些默認(rèn)行為,這些配置可以在struts.xml文件中完成,也可以在struts.properties文件中完成
    2016-09-09
  • springboot實現(xiàn)攔截器之驗證登錄示例

    springboot實現(xiàn)攔截器之驗證登錄示例

    本篇文章主要介紹了springboot實現(xiàn)攔截器之驗證登錄示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    這篇文章主要介紹了window?下?win10?jdk8安裝與環(huán)境變量的配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

贵港市| 达孜县| 始兴县| 离岛区| 盈江县| 凤冈县| 教育| 镇远县| 高平市| 双峰县| 内江市| 奎屯市| 西吉县| 离岛区| 盐源县| 保靖县| 长丰县| 保德县| 鄯善县| 元谋县| 昆明市| 驻马店市| 古浪县| 平罗县| 沛县| 恭城| 青阳县| 惠安县| 华容县| 黄骅市| 察雅县| 利川市| 花莲县| 瑞金市| 鹤岗市| 凌云县| 平谷区| 中宁县| 万载县| 耒阳市| 山阴县|