SpringBoot3.0不建議使用spring.factories,使用AutoConfiguration.imports新的自動配置方案

文章目錄

  • 一、寫在前面
  • 二、使用imports文件
    • 1、使用
    • 2、示例比對
    • 3、完整示例
  • 參考資料

一、寫在前面

spring.factories是一個位于META-INF/目錄下的配置文件,它基于Java的SPI(Service Provider Interface)機制的變種實現。
這個文件的主要功能是允許開發者聲明接口的實現類,從而實現SpringBoot的自動裝配和擴展點注冊

這個文件在SpringBoot2.7以前,真就是SpringBoot的擴展神器,各種自動配置的插件幾乎都是基于這種方式來實現的。
但是SpringBoot2.7以后,spring.factories就不是最優解了,而是替換為了META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

具體文檔地址:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes#changes-to-auto-configuration
在這里插入圖片描述
以下是翻譯:
在這里插入圖片描述
簡單來說,只需要創建一個META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,每一行都是一個自動配置的條目即可,用法比以前簡潔不少。

而以前的spring.factoriesorg.springframework.boot.autoconfigure.EnableAutoConfiguration鍵已經被刪除了,詳情:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide
在這里插入圖片描述

在這里插入圖片描述

二、使用imports文件

1、使用

從SpringBoot 3.0開始,引入了基于imports文件的新機制,作為spring.factories的替代方案。這些文件位于META-INF/spring/目錄下,每種類型的擴展點對應一個專門的文件:
在這里插入圖片描述

2、示例比對

舊方式(spring.factories):

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.FooAutoConfiguration,\
com.example.BarAutoConfiguration

新方式(AutoConfiguration.imports):

com.example.FooAutoConfiguration
com.example.BarAutoConfiguration

3、完整示例

// 1. 創建配置屬性類
@ConfigurationProperties(prefix = "myapp")
publicclass MyProperties {privateboolean enabled = true;private String name = "default";// getter和setter方法// ...
}// 2. 創建自動配置類
@AutoConfiguration// 注意這里使用了@AutoConfiguration而非@Configuration
@EnableConfigurationProperties(MyProperties.class)
@ConditionalOnProperty(prefix = "myapp", name = "enabled", havingValue = "true", matchIfMissing = true)
publicclass MyAutoConfiguration {privatefinal MyProperties properties;public MyAutoConfiguration(MyProperties properties) {this.properties = properties;}@Bean@ConditionalOnMissingBeanpublic MyService myService() {// 根據屬性創建服務returnnew MyServiceImpl(properties.getName());}
}

3、然后,在META-INF/spring/目錄下創建org.springframework.boot.autoconfigure.AutoConfiguration.imports文件:

com.example.MyAutoConfiguration

參考資料

https://mp.weixin.qq.com/s/VQh1xwAhajoPM9I1DnTs1Q

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73429.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73429.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73429.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙特效教程10-卡片展開/收起效果

鴻蒙特效教程10-卡片展開/收起效果 在移動應用開發中,卡片是一種常見且實用的UI元素,能夠將信息以緊湊且易于理解的方式呈現給用戶。 本教程將詳細講解如何在HarmonyOS中實現卡片的展開/收起效果,通過這個實例,你將掌握ArkUI中狀…

hn航空app hnairSign unidbg 整合Springboot

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向分析 學習unidbg補環境。先弄一個…

奇怪的異形選項卡樣式、弧形邊框選項卡

<template><div :class"$options.name"><div class"tab">默認選項卡</div><div class"tab" active>選中選項卡</div><el-divider /><el-tabs v-model"tabActiveName" tab-click"(t…

特殊行車記錄儀DAT視頻丟失的恢復方法

行車記錄儀是一種常見的車載記錄儀&#xff0c;和常見的“小巧玲瓏”的行車記錄儀不同&#xff0c;一些特種車輛使用的記錄儀的外觀可以用“笨重”來形容。下邊我們來看看特種車載行車記錄儀刪除文件后的恢復方法。 故障存儲: 120GB存儲設備/文件系統:exFAT /簇大小:128KB 故…

UE5小石子陰影在非常近距離才顯示的問題

Unreal中采用LandscapeGrass生成的地形&#xff0c;在MovieRenderQueue中渲染時陰影顯示距離有問題&#xff0c;在很近的時候才會有影子&#xff0c;怎么解決&#xff1f; 地面上通過grass生成的小石子的陰影只能在很近的時候才能顯示出來&#xff0c;需要如下調整 r.Shadow.R…

零基礎上手Python數據分析 (9):DataFrame 數據讀取與寫入 - 讓數據自由穿梭

回顧一下,上篇博客我們學習了 Pandas 的核心數據結構 Series 和 DataFrame。 DataFrame 作為 Pandas 的 “王牌” 數據結構,是進行數據分析的基石。 但 DataFrame 的強大功能,還需要建立在 數據輸入 (Input) 和 數據輸出 (Output) 的基礎上。 數據從哪里來? 分析結果又如何…

【商城實戰(65)】退換貨流程全解析:從前端到后端的技術實現

【商城實戰】專欄重磅來襲!這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建,運用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用戶、商品、訂單等核心模塊開發,再到性能優化、安全加固、多端適配,乃至運營推廣策略,102 章內容層層遞進。無論是想…

SQL Server 2022 安裝問題

一、安裝與配置問題 1. SQL Server 2022 安裝失敗怎么辦&#xff1f; 常見原因&#xff1a; 硬件或操作系統不滿足最低要求&#xff08;如內存、磁盤空間不足&#xff09;。未關閉防火墻或殺毒軟件。之前版本的 SQL Server 殘留文件未清理。 解決方案&#xff1a; 確保硬件配…

解鎖 AWX+Ansible 自動化運維新體驗:快速部署實戰

Ansible 和 AWX 是自動化運維領域的強大工具組合。Ansible 是一個簡單高效的 IT 自動化工具&#xff0c;而 AWX 則是 Ansible 的開源 Web 管理平臺&#xff0c;提供圖形化界面來管理 Ansible 任務。本指南將帶你一步步在 Ubuntu 22.04 上安裝 Ansible 和 AWX&#xff0c;使用 M…

【xiaozhi贖回之路-2:語音可以自己配置就是用GPT本地API】

固件作用 打通了網絡和硬件的溝通 修改固件實現【改變連接到小智服務器的】 回答邏輯LLM自定義 自定義了Coze&#xff08;比較高級&#xff0c;自定義程度比較高&#xff0c;包括知識庫&#xff0c;虛擬腳色-戀人-雅思老師-娃娃玩具{可能需要使用顯卡對開源模型進行微調-產…

Springboot 學習 之 Shardingsphere 按照日期水平分表(二)

文章目錄 業務場景依賴配置特別注意優劣參考資料 業務場景 在 報表 等 大數據量 且需要 按照日期顯示 的業務場景下&#xff0c;按照 日期水平分表 是一個不錯的選擇 依賴 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-b…

(UI自動化測試web端)第二篇:元素定位的方法_xpath擴展(工作當中用的比較多)

看代碼里的【driver.find_element_by_xpath( )】()里的路徑怎么寫&#xff1f; xpath元素定位有多種寫法&#xff0c;那我們現在說的就是在元素定位時&#xff0c;根據網頁的實際情況來選擇適合的xpath元素定位的寫法。信我 &#xff0c;你真正工作當中每個都有用的&#xff01…

[已解決]服務器CPU突然飆高98%----Java程序OOM問題 (2024.9.5)

目錄 問題描述問題排查問題解決參考資料 問題描述 業主單位服務器自8月29日晚上21:00起CPU突然飆高至98%&#xff0c;內存爆滿&#xff0c;一直到9月5日&#xff1a; 問題排查 ①執行 top 命令查看Java進程PID top②執行top -Hp PID 命令查看具體的線程情況 top -Hp 3058輸入上…

Mybatis基于注解開發

Mybatis基于注解進行開發 基于注解形式開發Mybatis省去XML的SQL映射配置文件&#xff08;只需要在Mybatis的核心配置文件中設置要掃描的接口通過Mapper標簽中的子標簽<package>指定要掃描的包&#xff09; 注意&#xff1a;在進行想改的SQL操作的時候首先要注意數據表的…

【C++】STL性能優化實戰

STL性能優化實戰 STL (Standard Template Library) 是 C 標準庫的核心部分&#xff0c;提供了各種容器、算法和迭代器。雖然 STL 提供了強大的功能&#xff0c;但不恰當的使用可能導致性能問題。下面我將詳細介紹 STL 性能優化的實戰技巧&#xff0c;并通過具體案例說明。 1.…

OSI模型_TCP/IP模型_五層模型

文章目錄 OSI模型_TCP/IP模型_五層模型模型對比模型層級對比關鍵區別對比 OSI模型OSI模型概述舉例說明流程圖示 TCP/IP 四層模型模型結構舉例說明流程圖示 TCP/IP 五層模型模型的結構舉例說明流程圖示 OSI模型_TCP/IP模型_五層模型 學OSI&#xff0c;用TCP/IP&#xff0c;分析選…

R語言——字符串

參考資料&#xff1a;學習R 文本數據存儲在字符向量中。重要的是&#xff0c;字符向量中的每個元素都是字符串&#xff0c;而非單獨的字符。 文本的基本單位是字符向量&#xff0c;著意味著大部分字符串處理函數也能用于字符向量。 1、創建和打印字符串 字符向量可用c函數創建…

如何區別在Spring Boot 2 和 Spring Boot 3 中使用 Knife4j:集成與配置指南

在現代的 Web 開發中&#xff0c;API 文檔是不可或缺的一部分。Knife4j 是基于 Swagger 的增強工具&#xff0c;它不僅提供了更友好的 API 文檔界面&#xff0c;還支持更多實用的功能&#xff0c;如離線文檔導出、全局參數配置等。本文將詳細介紹如何在 Spring Boot 2 和 Sprin…

pagehelper 分頁插件使用說明

pom.xml&#xff1a;pageHelper坐標 <!--pageHelper坐標--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency> 分…

C++可變參數

可變參數C風格的可變參數C風格可變參數的使用 C11可變參數模板遞歸展開參數包參數列表展開折疊表達式 STL中的emplace插入接口 可變參數 C風格的可變參數 可變參數是一種語言特性&#xff0c;可以在函數聲明中使用省略號...來表示函數接受可變數量的參數。 例如典型的printf…