SpringBoot主入口類分析

1 )SpringBoot主入口類

SpringBoot 主入口類如下所示,這個類的main方法就是整個springboot項目的入口。?

package com.example.demo3;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Demo3Application {public static void main(String[] args) {SpringApplication.run(Demo3Application.class, args);}}

2 )@SpringBootApplication注解

?SpringBootApplication注解的源碼如下所示。

?通過如上注解可以看出,其 @SpringBootApplication注解包含著以下三個注解。

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}
)

其余的都是JDK內置的原注解,也就是說 @SpringBootApplication 是一個復合注解,同時擁有以上三個注解的功能。

?3)@SpringBootConfiguration注解

?@SpringBootConfiguration本身又是一個組合注解,其內容如下:

所以看出來,其是@SpringBootConfiguration本身包含著@Configuration注解,而只要被@Configuration標注的類,其都是配置類,所以可以得出的結論是:@Configuration實際標注著SpringBoot 的主入口類,所以入口類本身也是一個配置類

測試入口類是一個配置類:

package com.example.demo3.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;@RestController
public class UserController {@Autowiredprivate Date date;@GetMapping("/hello")public String Hello(){return date.toString();}}

?可以看出,其確實Date的類型確實被納入到了IOC容器。

4 )@EnableAutoConfiguration

EnableAutoConfiguration它是一個啟用自動配置的注解。也就是說,在默認情況下,springboot應用都會默認啟動自動配置。自動配置是什么?

所謂的自動配置,就是springboot應用會去類路徑當中查找class,根據類路徑當中有某個類,或某些類來自動管理Bean,不需要我們自己手動配置。

舉例:

springboot檢測到類路徑當中有SqlSessionFactory,或者application.properties文件中配置了數據,那么springboot會認為項目中有mybatis框架,因此會將mybatis中相關的bean自動的初始化,然后放到IOC容器當中,自動的將這些bean管理起來。

 public static void main(String[] args) {
//        SpringApplication.run(Demo3Application.class, args);ConfigurableApplicationContext applicationContext =  SpringApplication.run(Demo3Application.class, args);
}

其中SpringApplication.run(Demo3Application.class, args);是有返回值的,其返回值中就可以獲取到Spring的上下文對象的。其run方法返回值就是spring容器。

可以發現,其確實自動的被注入了?

5)@ComponentScan

ComponentScan注解是一個負責組件掃描的注解,這個注解出現在springboot主入口類上,因此組件掃描默認掃描的包是主入口程序所在的包以及該包下的所有子包。

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

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

相關文章

【RabbitMQ】 RabbitMQ高級特性(一)

文章目錄 一、消息確認1.1、消息確認機制1.2、手動確認方法1.2.1、AcknowledgeMode.NONE1.2.2、AcknowledgeMode.AUTO1.3.3、AcknowledgeMode.MANUAL 二、持久性2.1、 交換機持久化2.2、隊列持久化2.3、消息持久化 三、發送方確認3.1、confirm確認模式3.2、return退回模式3.3、…

探索Hello Robot開源移動操作機器人Stretch 3的技術亮點與市場定位

Hello Robot 推出的 Stretch 3 機器人憑借其前沿技術和多功能性在眾多產品中占據優勢。Stretch 3 機器人采用開源設計,為開發者提供了靈活的定制空間,能夠滿足各種不同的需求。其配備的靈活手腕組件和 Intel Realsense D405 攝像頭,顯著增強了…

expo多網絡請求設定。

在使用 npx expo start 啟動 Expo 開發服務器時,你可以通過設置網絡模式來控制你的應用如何連接到開發服務器。Expo 提供了幾種網絡模式供你選擇: LAN (Default): 這是默認模式。在這種模式下,你的應用會通過本地局域網 (LAN) 連接到你的開發…

Nginx 安全防護與HTTPS部署

目錄 一、核心安全配置 1、隱藏版本號 2、限制危險請求方法 3、請求限制(CC攻擊防御) (1)使用Nginx的limit_req模塊限制請求速率 (2)壓力測試驗證 4、防盜鏈 (1)修改 Window…

windows 環境下 python環境安裝與配置

運行環境安裝 第一步安裝包下載 python開發工具安裝包下載官網: https://www.python.org/ 根據自己的實際需求選擇。 這里記錄了各個版本的區別和差異。根據區別和差異選擇適合自己的版本。 Windows Installer和Windows embeddable package是兩種不同的軟件包類…

TB6600HG是一款PWM(脈寬調制)斬波型單芯片雙極性正弦波微步進電機驅動集成電路。

該驅動器支持電機的正向和反向旋轉控制,并具有多種激勵模式,包括2相、1-2相、W1-2相、2W1-2相和4W1-2相。 使用這款驅動器,只需時鐘信號即可驅動2相雙極性步進電機,且振動小、效率高。 主要特點: 單芯片雙極性正弦波…

【JS逆向基礎】爬蟲核心模塊:request模塊與包的概念

前言:這篇文章主要介紹JS逆向爬蟲中最常用的request模塊,然后引出一系列的模塊的概念,當然Python中其他比較常用的還有很多模塊,正是這些模塊也可以稱之為庫的東西構成了Python強大的生態,使其幾乎可以實現任何功能。下…

極狐Gitlab 里程碑功能介紹

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 里程碑 (BASIC ALL) 極狐GitLab 中的里程碑是一種跟蹤議題和合并請求的方法,這些請求是為了在特定時間段內實現更…

【日擼 Java 三百行】Day 10(綜合任務 1)

目錄 Day 10:綜合任務 1 一、題目分析 1. 數據結構 2. 相關函數基本知識 二、模塊介紹 1. 初始化與成績矩陣的構建 2. 創建總成績數組 3. 尋找成績極值 三、代碼與測試 小結 拓展:關于求極值的相關算法 Day 10:綜合任務 1 Task&…

c++:庫(Library)

目錄 什么是庫? C中庫的兩種形態:靜態庫 和 動態庫 靜態鏈接 vs 動態鏈接(鏈接 ≠ 庫) 🔒 靜態鏈接(Static Linking) 🔗 動態鏈接(Dynamic Linking) C標…

Java線程池深度解析:從使用到原理全面掌握

在高并發場景下,線程管理是提升系統性能的關鍵。本文將深入探討Java線程池的核心機制,帶你從基礎使用到底層實現全面掌握這一重要技術。 一、線程池存在的意義 1.1 線程的隱形成本 盡管線程相比進程更輕量,但當QPS達到萬級時: 頻…

PostgreSQL 的 pg_advisory_lock_shared 函數

PostgreSQL 的 pg_advisory_lock_shared 函數詳解 pg_advisory_lock_shared 是 PostgreSQL 提供的共享咨詢鎖函數,允許多個會話同時獲取相同鍵值的共享鎖,但排斥排他鎖。 共享咨詢鎖 vs 排他咨詢鎖 鎖類型共享鎖 (pg_advisory_lock_shared)排他鎖 (pg…

Halcon之計算抓取螺母的位姿

文章目錄 1,項目說明。2,注意事項3,關聯的主要算子3.1, gen_parallels_xld 3.2 ,convert_pose_type 4,程序流程。5,代碼6,Demo鏈接。 1,項目說明。 Robot標定使用的模式…

互聯網大廠Java求職面試:AI集成場景下的技術挑戰與架構設計

標題:互聯網大廠Java求職面試:AI集成場景下的技術挑戰與架構設計 第一幕:向量數據庫選型與性能調優 技術總監(嚴肅臉): 鄭薪苦,我們最近在做一個基于大語言模型的企業級AI應用,需要…

ABB電機控制和保護單元與Profibus DP主站轉Modbus TCP網關快速通訊案例

ABB電機控制和保護單元與Profibus DP主站轉Modbus TCP網關快速通訊案例 在現代工業自動化系統中,設備之間的互聯互通至關重要。Profibus DP和Modbus TCP是兩種常見的通信協議,分別應用于不同的場景。為了實現這兩種協議的相互轉換,Profibus …

智慧農業、智慧養殖平臺—監控攝像頭管理監控設計—仙盟創夢IDE

智慧養殖 監控攝像頭是核心管理工具,主要通過以下方式提升養殖效率與管理水平: 環境實時監測:對養殖區域進行全天候可視化監控,及時捕捉溫度、濕度、通風等環境要素變化,確保動物生存環境穩定 。例如在規模化豬場&…

YOLO 從入門到精通學習指南

一、引言 在計算機視覺領域,目標檢測是一項至關重要的任務,其應用場景廣泛,涵蓋安防監控、自動駕駛、智能交通等眾多領域。YOLO(You Only Look Once)作為目標檢測領域的經典算法系列,以其高效、快速的特點受到了廣泛的關注和應用。本學習指南將帶領你從 YOLO 的基礎概念…

Java 24新特性深度解析:從優化技巧到高手進階指南

一、Java 24核心新特性詳解 Java 24作為長期支持版本(LTS),帶來了許多令人振奮的新特性,下面我們將深入探討其中最值得關注的改進。 1. 字符串模板(String Templates)正式發布 字符串模板結束了Java字符串拼接的混亂時代&#…

《類和對象(中)》

引言: 上次我們主要學習了類的相關知識,今天我們就來學習類和對象(中),今天也會用到之前學習過的東西,可以說是前面知識的結合,較前面會難一點(打個預防針)。 一:類的默認成員函數…

為什么 AI 理解不了邏輯問題?

人類擅長“如果 A 則 B”,AI 擅長“這個像那個”。邏輯推理?對它來說是一場災難性的認知挑戰。 前言 在實際使用 AI(尤其是大型語言模型,比如 GPT、Claude、Gemini 等)時,我們常發現一個詭異的現象:它們文采斐然,甚至能講出笑話,但一旦問點小學奧數或邏輯問題,就集體…