AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

SpringBoot的自動(dòng)裝配,你學(xué)會(huì)了嗎?

來源: 責(zé)編: 時(shí)間:2024-05-29 08:54:19 120觀看
導(dǎo)讀我們今天再來說一下關(guān)于 SpringBoot 的自動(dòng)裝配,為什么會(huì)有這樣的問題呢?一般這種情況都是在面試的過程中,面試官有時(shí)候會(huì)問到這個(gè)問題,就比如從開始問SpringBoot 的一些常用注解,到SpringBoot的一些特性,然后引申到這個(gè) Sp

我們今天再來說一下關(guān)于 SpringBoot 的自動(dòng)裝配,為什么會(huì)有這樣的問題呢?一般這種情況都是在面試的過程中,面試官有時(shí)候會(huì)問到這個(gè)問題,就比如從開始問SpringBoot 的一些常用注解,到SpringBoot的一些特性,然后引申到這個(gè) SpringBoot 的自動(dòng)裝配上來。今天就和了不起一起來聊聊關(guān)于這個(gè) SpringBoot 的自動(dòng)裝配吧。MWa28資訊網(wǎng)——每日最新資訊28at.com

什么是SpringBoot的裝配

Spring Boot 的自動(dòng)裝配(Auto-Configuration)是指 Spring Boot 會(huì)根據(jù)項(xiàng)目中添加的依賴和其他因素,自動(dòng)配置你的 Spring 應(yīng)用程序。這一特性使得開發(fā)者在創(chuàng)建 Spring 應(yīng)用程序時(shí),可以省去大量的手動(dòng)配置工作,從而快速啟動(dòng)和運(yùn)行應(yīng)用程序。MWa28資訊網(wǎng)——每日最新資訊28at.com

自動(dòng)裝配流程

SpringBoot的自動(dòng)裝配工作流程主要基于其核心注解和一系列的配置機(jī)制,以下是對(duì)其工作流程的詳細(xì)解析:MWa28資訊網(wǎng)——每日最新資訊28at.com

1.啟動(dòng)注解:

  • SpringBoot的自動(dòng)裝配始于@SpringBootApplication注解。這個(gè)注解實(shí)際上是@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三個(gè)注解的組合。

2.@SpringBootConfiguration:

  • @SpringBootConfiguration注解本質(zhì)上是一個(gè)@Configuration注解的包裝,用于聲明當(dāng)前類是一個(gè)配置類,可以定義Bean,也可以引入其他配置類。

3.@EnableAutoConfiguration:

  • 這是實(shí)現(xiàn)自動(dòng)裝配的關(guān)鍵注解。它包含了@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class)兩個(gè)子注解。
  • @AutoConfigurationPackage:用于自動(dòng)配置包,使得主配置類(帶有@SpringBootApplication注解的類)所在的包及其子包中的組件都能被Spring容器掃描到。
  • @Import(AutoConfigurationImportSelector.class):這個(gè)注解的作用是導(dǎo)入類,但在這里它并不是直接導(dǎo)入一個(gè)普通的類,而是導(dǎo)入了一個(gè)實(shí)現(xiàn)了ImportSelector接口的類AutoConfigurationImportSelector。這個(gè)類的作用是根據(jù)一定的規(guī)則(比如類路徑下的META-INF/spring.factories文件)來加載并配置一些自動(dòng)裝配的類。

4.META-INF/spring.factories:

  • 在Spring Boot的自動(dòng)裝配過程中,META-INF/spring.factories文件起到了非常關(guān)鍵的作用。這個(gè)文件是Spring Boot用來加載自動(dòng)配置類的一個(gè)約定俗成的文件,它位于各個(gè)Spring Boot Starter的jar包中。Spring Boot在啟動(dòng)時(shí),會(huì)掃描所有jar包中的META-INF/spring.factories文件,并將其中配置的自動(dòng)配置類加載到Spring容器中。

5.自動(dòng)配置類:

  • 這些類通常是以AutoConfiguration結(jié)尾的,它們使用@Configuration注解標(biāo)注,并且內(nèi)部定義了一些Bean。這些Bean就是Spring Boot自動(dòng)裝配到Spring容器中的組件。

6.條件裝配:

  • 在自動(dòng)配置類中,經(jīng)常可以看到@ConditionalOnClass、@ConditionalOnProperty等條件注解。這些注解的作用是判斷當(dāng)前環(huán)境是否滿足某個(gè)條件,如果滿足則進(jìn)行自動(dòng)裝配,否則不進(jìn)行裝配。這樣可以根據(jù)項(xiàng)目的實(shí)際情況來靈活地選擇需要裝配的組件。

7.總結(jié):

SpringBoot的自動(dòng)裝配工作流程大致可以歸納為:首先通過@SpringBootApplication注解啟動(dòng)Spring Boot應(yīng)用,然后利用@EnableAutoConfiguration注解中的@Import(AutoConfigurationImportSelector.class)來加載META-INF/spring.factories文件中配置的自動(dòng)配置類,最后根據(jù)這些自動(dòng)配置類中的定義和條件注解來將相應(yīng)的組件裝配到Spring容器中。MWa28資訊網(wǎng)——每日最新資訊28at.com

自動(dòng)裝配的核心

@SpringBootApplication

這個(gè)注解,就是自動(dòng)裝配的核心,我們來詳細(xì)解讀一下這個(gè) @SpringBootApplicationMWa28資訊網(wǎng)——每日最新資訊28at.com

它其實(shí)是一個(gè)組合注解,用于簡(jiǎn)化 Spring Boot 應(yīng)用的配置。這個(gè)注解通常被用在 Spring Boot 的主類上,以指示該類是一個(gè)特殊的配置類,用于引導(dǎo)應(yīng)用上下文的啟動(dòng)。MWa28資訊網(wǎng)——每日最新資訊28at.com

組成部分

1.@SpringBootConfiguration:

  • 這是一個(gè)特殊的 @Configuration 注解,表示該類是一個(gè)配置類,并告訴 Spring Boot 這是一個(gè)特殊的配置類,用于加載應(yīng)用的上下文設(shè)置。
  • 實(shí)際上,@SpringBootConfiguration 僅僅是 @Configuration 的一個(gè)特殊版本,并且二者在功能上沒有區(qū)別。但 @SpringBootConfiguration 更多地用于標(biāo)識(shí)這是一個(gè) Spring Boot 應(yīng)用。

2.@EnableAutoConfiguration:

  • 這是 Spring Boot 的核心特性之一。它告訴 Spring Boot 根據(jù)添加的 jar 依賴項(xiàng)、類路徑設(shè)置、各種屬性設(shè)置等自動(dòng)配置你的 Spring 應(yīng)用。例如,如果你的類路徑下有 spring-boot-starter-web,那么 Spring Boot 會(huì)自動(dòng)配置嵌入式 Tomcat 服務(wù)器和 Spring MVC。
  • 你可以通過 spring.autoconfigure.exclude 屬性來排除某些自動(dòng)配置。

3.@ComponentScan:

  • @ComponentScan 告訴 Spring 掃描當(dāng)前包及其子包下的組件(如 @Component、@Service、@Repository、@Controller 等),并將它們注冊(cè)為 Spring Bean。
  • 默認(rèn)情況下,它會(huì)掃描標(biāo)注了 @SpringBootApplication 注解的類所在的包及其子包。你可以通過 basePackages 或 basePackageClasses 屬性來指定掃描的包。

如果這個(gè)時(shí)候,我們給面試官解釋了這個(gè) SpringBoot的自動(dòng)裝配的原理之后,面試官很大程度上就開始要往下延伸內(nèi)容了,既然 @Autowired 能實(shí)現(xiàn)了則個(gè)自動(dòng)裝配,那么還有其他注解么?以及他和 @Autowired 的區(qū)別在哪呢?MWa28資訊網(wǎng)——每日最新資訊28at.com

@Resource和@Autowire

@Resource 和 @Autowired 都是 Spring 框架中用于自動(dòng)裝配 bean 的注解,但它們之間有一些區(qū)別。以下是這兩個(gè)注解的主要區(qū)別:MWa28資訊網(wǎng)——每日最新資訊28at.com

來源不同

@Autowired 是 Spring 特有的注解,用于自動(dòng)裝配 bean。MWa28資訊網(wǎng)——每日最新資訊28at.com

@Resource 是 Java 的標(biāo)準(zhǔn)注解,屬于 JSR-250 規(guī)范的一部分,但 Spring 也支持它作為自動(dòng)裝配的注解。MWa28資訊網(wǎng)——每日最新資訊28at.com

@Autowired

@Autowired 是 Spring 特有的注解,用于自動(dòng)裝配 bean。Spring 容器會(huì)檢查 bean 的屬性、方法以及構(gòu)造器,然后使用與指定類型相匹配的 bean 進(jìn)行自動(dòng)裝配。MWa28資訊網(wǎng)——每日最新資訊28at.com

  • 類型匹配:默認(rèn)情況下,@Autowired 是基于類型(Type)的自動(dòng)裝配。如果存在多個(gè)相同類型的 bean,那么就需要使用其他機(jī)制(如 @Qualifier 注解或 @Primary 注解)來進(jìn)一步指定。
  • 構(gòu)造器注入:Spring 4.3 之后,推薦使用構(gòu)造器注入來替代字段注入,因?yàn)樗梢蕴峁└玫牟豢勺冃院蜏y(cè)試性。
  • 可配置性:@Autowired 是可選的,并且可以通過 Spring 的配置文件(如 XML 文件)進(jìn)行更詳細(xì)的配置。

@Resource

@Resource 是 Java EE 的一部分(來自 JSR-250),同時(shí)也是 Spring 支持的注解。它提供了更豐富的功能,包括指定名稱(name)和類型(type)來查找 bean。MWa28資訊網(wǎng)——每日最新資訊28at.com

  • 名稱和類型匹配:與 @Autowired 相比,@Resource 提供了更靈活的匹配方式。它可以基于名稱(如果提供了)或類型進(jìn)行查找。如果同時(shí)指定了名稱和類型,并且找不到匹配的 bean,那么就會(huì)拋出異常。
  • 與 Java EE 兼容:由于 @Resource 是 Java EE 的一部分,因此它可以在任何支持 Java EE 的環(huán)境中使用,而不僅僅是 Spring。

到這里,本篇文章就接近尾聲了,關(guān)于 SpringBoot的自動(dòng)裝配,你掌握了多少呢?MWa28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-91355-0.htmlSpringBoot的自動(dòng)裝配,你學(xué)會(huì)了嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 深入Go原理:協(xié)程間通信基礎(chǔ)Chan

下一篇: 一日一技:如何正確處理多行字符串的縮進(jìn)問題

標(biāo)簽:
  • 熱門焦點(diǎn)
Top