国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何創(chuàng)建自己的Spring Boot Starter并為其編寫單元測試

這篇具有很好參考價值的文章主要介紹了如何創(chuàng)建自己的Spring Boot Starter并為其編寫單元測試。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

當我們想要封裝一些自定義功能給別人使用的時候,創(chuàng)建Spring Boot Starter的形式是最好的實現(xiàn)方式。如果您還不會構(gòu)建自己的Spring Boot Starter的話,本文將帶你一起創(chuàng)建一個自己的Spring Boot Starter。

快速入門

  1. 創(chuàng)建一個新的 Maven 項目。第三方封裝的命名格式是 xxx-spring-boot-starter ,例如:didispace-spring-boot-starter。

  2. 編輯pom.xml,添加spring-boot-autoconfigurespring-boot-starter依賴

<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>
</dependencies>
  1. 創(chuàng)建一個用 @Configuration 注釋的配置類,在這里您可以使用@Bean來創(chuàng)建使用@ConditionalOnClass、@ConditionalOnMissingBean等條件注釋來控制何時應(yīng)用配置。
@Configuration
@ConditionalOnClass(MyFeature.class)
@ConditionalOnProperty(prefix = "myfeature", name = "enabled", matchIfMissing = true)
public class MyFeatureAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public MyFeature myFeature() {
        return new MyFeature();
    }
}
  1. src/main/resources/META-INF目錄下創(chuàng)建spring.factories文件,并在org.springframework.boot.autoconfigure.EnableAutoConfiguration關(guān)鍵字下列出您的自動配置類,比如:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.didispace.myfeature.MyFeatureAutoConfiguration

該配置的作用是讓Spring Boot應(yīng)用在引入您自定義Starter的時候可以自動這里的配置類。

注意:Spring Boot 2.7開始,不再推薦使用spring.factories,而是改用/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,文件內(nèi)容直接放需要自動加載配置類路徑即可。這個變更具體可見之前的這篇文章:《Spring Boot 2.7開始spring.factories不推薦使用了》

驗證測試

在制作Spring Boot Starter的時候,一定記得使用單元測試來驗證和確保自動化配置類在任何條件邏輯在啟動器下能夠按照正確的預(yù)期運行。

創(chuàng)建單元測試

使用@SpringBootTest加載完整的應(yīng)用程序上下文,并驗證啟動程序是否正確配置了 Bean 和屬性。

@SpringBootTest(classes = TestApplication.class)
public class MyStarterAutoConfigurationTest {

    @Autowired(required = false)
    private MyService myService;

    @Test
    public void testMyServiceAutoConfigured() {
        assertNotNull(myService, "MyService should be auto-configured");
    }
}

覆蓋不同的配置

如果有不同的配置方案,那么還需要使用@TestPropertySource@DynamicPropertySource覆蓋屬性以測試不同配置下的情況。

或者也可以直接簡單的通過@SpringBootTest中的屬性來配置,比如下面這樣:

@SpringBootTest(properties = "my.starter.custom-property=customValue")
public class MyStarterPropertiesTest {

    @Value("${my.starter.custom-property}")
    private String customProperty;

    @Test
    public void testPropertyOverride() {
        assertEquals("customValue", customProperty, "Custom property should be overridden by @SpringBootTest");
    }
}

覆蓋@Conditional的不同分支

如果您的啟動器包含條件配置,比如:@ConditionalOnProperty、@ConditionalOnClass等注解,那么就必須編寫測試來覆蓋所有條件以驗證是否已正確。

比如下面這樣:

@SpringBootTest(classes = {TestApplication.class, MyConditionalConfiguration.class})
@ConditionalOnProperty(name = "my.starter.enable", havingValue = "true")
public class MyStarterConditionalTest {

    @Autowired
    private ApplicationContext context;

    @Test
    public void conditionalBeanNotLoadedWhenPropertyIsFalse() {
        assertFalse(
            context.containsBean("conditionalBean"),
            "Conditional bean should not be loaded when 'my.starter.enable' is false"
        );
    }
}

為了覆蓋不同的條件分支,我們通常還需要使用@TestConfiguration注解來有選擇地啟用或禁用某些自動配置。

小結(jié)

本文介紹了兩個Spring Boot的進階內(nèi)容:

  1. 如何創(chuàng)建 Spring Boot Starter
  2. 如何為 Spring Boot Starter 提供單元測試

掌握這項技能可以幫你更好的為Spring Boot提供模塊劃的功能封裝。如果您學(xué)習過程中如遇困難?可以加入我們超高質(zhì)量的Spring技術(shù)交流群,參與交流與討論,更好的學(xué)習與進步!更多Spring Boot教程可以點擊直達!,歡迎收藏與轉(zhuǎn)發(fā)支持!

最后再給大家推薦一些有關(guān)Spring Boot Starter和自動化配置的擴展閱讀:

  • Spring Boot Starter配置spring.factories的自動生成神器
  • Spring Boot自動化配置的利弊及解決之道

歡迎關(guān)注我的公眾號:程序猿DD。前沿技術(shù)早知道,彎道超車有希望!積累超車資本,從關(guān)注DD開始!文章來源地址http://www.zghlxwxcb.cn/news/detail-840390.html

到了這里,關(guān)于如何創(chuàng)建自己的Spring Boot Starter并為其編寫單元測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • idea創(chuàng)建spring項目后報錯‘org.springframework.boot:spring-boot-starter-parent:2.7.3‘ not found

    idea創(chuàng)建spring項目后報錯‘org.springframework.boot:spring-boot-starter-parent:2.7.3‘ not found

    創(chuàng)建新項目后spring-boot-starter-parent找不到,原因在于新建項目選擇了spring-boot-starter-parent新版本,而緩存中還是使用的老版本導(dǎo)致。 idea默認緩存maven本地庫中的依賴庫,在新建項目時會直接到緩存中尋找依賴庫。如果相同庫只是修改版本會導(dǎo)致idea無法從緩存中依賴到相應(yīng)的庫

    2024年02月07日
    瀏覽(98)
  • springboot web創(chuàng)建失敗,解決Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom

    springboot web創(chuàng)建失敗,解決Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom

    jdk8不支持3.0以上的springboot版本,如果你在創(chuàng)建項目的時候用的是jdk8,那么我建議你在創(chuàng)建好項目之后自行再pom文件里降級,我剛開始接觸springboot時,用的是jdk11,導(dǎo)入的springboot版本是2.7.1,然后弄了差不多半天都找不到原因,然后我就擴大了阿里云的搜索地址,自行在pom文

    2024年02月04日
    瀏覽(33)
  • Spring Boot中如何編寫優(yōu)雅的單元測試

    單元測試是指對軟件中的最小可測試單元進行檢查和驗證。在Java中,單元測試的最小單元是類。通過編寫針對類或方法的小段代碼,來檢驗被測代碼是否符合預(yù)期結(jié)果或行為。執(zhí)行單元測試可以幫助開發(fā)者驗證代碼是否正確實現(xiàn)了功能需求,以及是否能夠適應(yīng)應(yīng)用環(huán)境或需求

    2024年02月11日
    瀏覽(24)
  • Spring Boot - spring-boot-starter

    spring-boot-starter 當學(xué)習Spring Boot時,可以通過一個完整的案例來理解和實踐其基本概念和功能。以下是一個簡單的Spring Boot Starter完整案例,展示了如何創(chuàng)建一個基本的Web應(yīng)用程序: 首先,創(chuàng)建一個名為pom.xml的Maven項目文件,添加以下內(nèi)容:idea或其他直接創(chuàng)建直接跳過!

    2024年02月09日
    瀏覽(26)
  • 自定義Spring Boot Starter

    自定義Spring Boot Starter

    Spring Boot starter 我們知道Spring Boot大大簡化了項目初始搭建以及開發(fā)過程,而這些都是通過Spring Boot提供的starter來完成的。在實際項目中一些基礎(chǔ)模塊其本質(zhì)就是starter,所以我們需要對Spring Boot的starter有一個全面深入的了解,這是我們的必備知識。 starter介紹 spring boot 在配置

    2024年02月10日
    瀏覽(29)
  • Spring Boot Starter設(shè)計實現(xiàn)

    Starter 是 Spring Boot 非常重要的一個硬核功能。 通過 Starter 我們可以快速的引入一個功能或模塊,而無須關(guān)心模塊依賴的其它組件。關(guān)于配置,Spring Boot 采用“約定大于配置”的設(shè)計理念,Starter 一般都會提供默認配置,只有當我們有特殊需求的時候,才需要在 application.yaml 里

    2024年01月18日
    瀏覽(19)
  • Spring Boot Starter Parent

    Spring Boot Starter Parent

    在這,您將學(xué)習了解 Spring Boot Starter Parent, 它是 Spring Boot 提供的父級 Pom 文件,旨在提供自動版本依賴管理,幫助我們輕松快速地進行?Spring Boot?開發(fā)。 通過 Spring Boot Starter Parent, 我們可以進行簡單便捷地包依賴管理。在 Spring Boot 每一個發(fā)行版中, 均提供了該版本所兼容的依

    2024年02月08日
    瀏覽(29)
  • shiro-spring-boot-starter針對不同Spring Boot版本

    對于Spring Boot 2.4.10,無法找到shiro-spring-boot-starter的2.7.2版本,這是一個錯誤的版本號。 shiro-spring-boot-starter針對不同Spring Boot版本,推薦使用的版本如下: Spring Boot 1.x - 使用版本1.4.1 Spring Boot 2.0.x - 使用版本1.5.3 Spring Boot 2.1.x - 使用版本1.6.0 Spring Boot 2.2.x - 使用版本1.7.0 Spring Boot 2.3

    2024年02月13日
    瀏覽(17)
  • 【Spring Boot 初識丨三】starter

    【Spring Boot 初識丨三】starter

    上一篇講了如何構(gòu)建 MAVEN 項目 本篇來講一講 starter 依賴項 Spring Boot 初識: 【Spring Boot 初識丨一】入門實戰(zhàn) 【Spring Boot 初識丨二】maven 【Spring Boot 初識丨三】starter 【Spring Boot 初識丨四】主應(yīng)用類 ??啟動器是一組方便的依賴關(guān)系描述符,它包含了一系列可以集成到應(yīng)用里

    2024年02月09日
    瀏覽(21)
  • Spring Boot Starter 剖析與實踐

    對于 Java 開發(fā)人員來說,Spring 框架幾乎是必不可少的。它是一個廣泛用于開發(fā)企業(yè)應(yīng)用程序的開源輕量級框架。近幾年,Spring Boot 在傳統(tǒng) Spring 框架的基礎(chǔ)上應(yīng)運而生,不僅提供了 Spring 的全部功能,還使開發(fā)人員更加便捷地使用。在使用 Spring Boot 時,我們經(jīng)常會接觸到各種

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包