【Spring Boot 注解】@Configuration與@AutoConfiguration

文章目錄

  • @Configuration與@AutoConfiguration
    • 一、@Configuration
    • 二、@AutoConfiguration

@Configuration與@AutoConfiguration

一、@Configuration

這是最常用的 Spring 注解之一,表示當前類是一個 配置類,可以定義 @Bean 方法,等效于傳統的 XML 配置文件。

特點:

  • 明確地告訴 Spring 這個類是配置類。
  • 常用于顯式配置,由開發者自己創建、引用。
  • @Bean 方法定義的組件會注冊到 Spring 容器中。

示例:

@Configuration
public class MyConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

只要MyConfig @SpringBootApplication掃描范圍內,那么該Bean就會被加載。

二、@AutoConfiguration

這是 Spring Boot 提供的注解,用于自動配置類。

特點:

  • 由 Spring Boot 自動加載,配合 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 使用。
  • 用于按需加載配置,支持條件注解(如 @ConditionalOnClass, @ConditionalOnProperty 等)。
  • 主要用于自動配置組件,如 Spring Boot 中的 starter 自動裝配機制。

示例:

package org.kaishu.framework.swagger;@AutoConfiguration
// 判斷是否引入了 OpenAPI 類,否則自動配置不啟用
@ConditionalOnClass({OpenAPI.class})
//只有當 springdoc.api-docs.enabled=true 或未配置(默認值)時,這段配置才會啟用
@ConditionalOnProperty(prefix = "springdoc.api-docs", name = "enabled", havingValue = "true", matchIfMissing = true)
@EnableConfigurationProperties(SwaggerProperties.class)
public class KaishuSwaggerAutoConfiguration {
...
}

注:
需要在 resource下創建文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 并在文件中聲明此類,Spring Boot 才會自動掃描并導入,不需要添加包路徑到@SpringBootApplication掃描范圍中。
文件示例:

org.kaishu.framework.swagger.KaishuSwaggerAutoConfiguration

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

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

相關文章

arXiv論文 MALOnt: An Ontology for Malware Threat Intelligence

文章講惡意軟件威脅情報本體。 作者信息 作者是老美的,單位是倫斯勒理工學院,文章是2020年的預印本,不知道后來發表在哪里(沒搜到,或許作者懶得投稿,也可能是改了標題)。 中心思想 介紹開源…

【存儲管理—動態不等長存儲資源分配算法】

文章目錄 一、實驗目的二、實驗內容與設計思想實驗內容設計思路 三、實驗代碼實現四、總結 一、實驗目的 理解動態異長存儲分區資源管理,掌握所需數據結構和管理程序,了解各種存儲分配算法的優點和缺點。 二、實驗內容與設計思想 實驗內容 1.分析uni…

快速上手 Docker:從入門到安裝的簡易指南(Mac、Windows、Ubuntu)

PS:筆者在五一剛回來一直搞Docker部署AI項目,發現從開發環境遷移到生成環境時,Docker非常好用。但真的有一定上手難度,推薦讀者多自己嘗試踩踩坑。 本篇幅有限,使用與修改另起篇幅。 一、Docker是什么 #1. Docker是什…

LabVIEW高沖擊加速度校準系統

在國防科技領域,高 g 值加速度傳感器廣泛應用于先進兵器研制,如深侵徹系統、精確打擊彈藥及鉆地彈藥等。其性能指標直接影響研究結果的準確性與可靠性,因此對該傳感器進行定期校準意義重大。高沖擊加速度校準系統具備多方面功能,適…

FPGA 純邏輯NVME raid0 IP核

系統采用XCZU19EG搭載4個三星990 PRO SSD 單盤讀寫不低于3GB/s 4盤總帶寬不低于12GB/s

GStreamer開發筆記(三):測試gstreamer/v4l2+sdl2/v4l2+QtOpengl打攝像頭延遲和內存

若該文為原創文章,轉載請注明原文出處 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147714800 長沙紅胖子Qt(長沙創微智科)博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、O…

CATIA高效工作指南——零件建模篇(二)

一、PowerCopy特征復用技術 1.1 智能特征封裝 通過??幾何圖形集(Geometrical Set)??構建參數化特征組,將關聯的草圖、曲面、實體等元素進行邏輯封裝。操作流程如下: 創建新幾何圖形集并完成特征建模激活PowerCopy命令,選擇目標幾何集定…

CentOS 7 安裝OpenJDK 17 JRE

CentOS 7 自帶的java 版本為:java version "1.8.0_311", 有些軟件的運行需要更高的java版本。CentOS 7 自帶的默認倉庫里 沒有 OpenJDK 17,但是 Adoptium 項目(前身 AdoptOpenJDK)提供了穩定的 OpenJDK 17 版…

【c++】 我的世界

太久沒更新小游戲了 給個贊和收藏吧&#xff0c;求求了 要游戲的請私聊我 #include <iostream> #include <vector>// 定義世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定義方塊類型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定義世界…

angular的cdk組件庫

目錄 一、虛擬滾動 一、虛擬滾動 <!-- itemSize相當于每個項目的高度為30px --><!-- 需要給虛擬滾動設置寬高&#xff0c;否則無法正常顯示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…

視頻編解碼學習三之顯示器

整理自&#xff1a;顯示器_百度百科&#xff0c;觸摸屏_百度百科,百度安全驗證 分為陰極射線管顯示器&#xff08;CRT&#xff09;&#xff0c;等離子顯示器PDP&#xff0c;液晶顯示器LCD 液晶顯示器的組成。一般來說&#xff0c;液晶顯示器由以下幾個部分組成&#xff1a; […

尚硅谷-硅谷甄選項目記錄

一、Vue3 1 基礎配置 1.1 路徑別名 vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue// 引入path&#xff0c;node提供的模塊&#xff0c;可以獲取文件或文件夾的路徑 import path from pathexport default defineConfig({plugins: […

ThinkPHP5 case when的使用

主表的類型不同&#xff0c;需要連接查詢不同的表時&#xff0c;可以使用case when 在主表(上面的表中)的模型里面&#xff0c;寫如下代碼來獲取列表&#xff1a; $res $this->alias("p")->field([p.*,"CASE WHEN p.pd_ticket_type 1 THEN (select s.s…

Android 10.0 SharedPreferences in credential encrypted storage are not avai

1.前言 在10.0的系統rom定制化開發中,在開機的過程中,由于某些應用在開機解鎖階段就開始訪問查詢短信和聯系人等功能,所以 會出現拋異常的情況出現,接下來分析下相關的情況,然后來解決這些問題 2.SharedPreferences in credential encrypted storage are not available …

LeetCode[102]二叉樹的層序遍歷

思路&#xff1a; 題目描述從左到右一層一層的進行遍歷&#xff0c;就遍歷二叉樹的這種題我更喜歡用遞歸來做&#xff0c; 我使用java來做的&#xff0c;結果集是兩個List集合&#xff0c;那么我們是不是應該每到新的一層就給這個結果集添加一個內部的List&#xff0c;那么怎么…

二種MVCC對比分析

文章目錄 前言MVCCInnodb的MVCC版本鏈回滾與提交可見性判斷 Oracle的MVCC版本鏈 PostgreSQL的MVCCMVCC實現可見性判斷特點 前言 ? MVCC&#xff08;多版本并發控制&#xff0c;Multi-Version Concurrency Control&#xff09;是一種數據庫管理系統&#xff08;DBMS&#x…

FAST-LIO筆記

1.FAST-LIO FAST-LIO 是一個計算效率高、魯棒性強的激光-慣性里程計系統。該系統通過緊耦合的迭代擴展卡爾曼濾波器&#xff08;IEKF&#xff09;將激光雷達特征點與IMU數據進行融合&#xff0c;使其在快速運動、噪聲較大或環境復雜、存在退化的情況下仍能實現穩定的導航。 1…

C++并發編程完全指南:從基礎到實踐

在當今多核處理器普及的時代&#xff0c;充分利用硬件并發能力已成為高性能編程的關鍵。C11引入的現代并發編程支持使得開發者能夠以標準化、可移植的方式編寫多線程程序。本文將全面介紹C并發編程的各個方面&#xff0c;從基礎概念到實際應用&#xff0c;幫助您掌握這一重要技…

如何使用docker配置ros-noetic環境并使用rviz,gazebo

參考鏈接&#xff1a;【Ubuntu】Docker中配置ROS并可視化Rviz及Gazebo_docker ros-CSDN博客 前言&#xff1a; 其實這個東西是相當必要的&#xff0c;因為我們有時候需要在一臺電腦上跑好幾個項目&#xff0c;每個項目都有不同的依賴&#xff0c;這些依賴沖突搞得人頭皮發麻&…

使用 Java 11 的 HttpClient 處理 RESTful Web 服務

在現代 Web 開發中,與 RESTful Web 服務交互是一項核心任務。Java 作為一種廣泛使用的編程語言,提供了多種處理 HTTP 請求的方法。在 Java 11 之前,開發者通常使用 HttpURLConnection 或第三方庫(如 Apache HttpClient)。然而,這些方法要么過于底層,要么需要額外依賴。J…