自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一篇學會SpringBoot的核心內(nèi)容之自動裝配

開發(fā) 前端
SpringBoot的自動裝配是一種機制,它可以幫助開發(fā)者更快地搭建和運行Spring應用。SpringBoot的自動裝配依賴于其提供的starter依賴,這些starter依賴包含了Spring應用所需的大部分配置,使得開發(fā)者不需要手動配置這些通用的功能。

不面試不知道,現(xiàn)在面試的問題真的是五花八門的,最近就有讀者說,在面試的過程中,面試官還提到了關于最初版本的 Spring 還有 SpringMVC 以及現(xiàn)在的 SpringBoot 中的一些相關問題,比如他提到了這個 SpringBoot 的自動裝配是什么,你是怎么理解的,今天了不起就和大家一起來看看這個關于 SpringBoot 的自動裝配。

SpringBoot裝配機制

SpringBoot的自動裝配是一種機制,它可以幫助開發(fā)者更快地搭建和運行Spring應用。SpringBoot的自動裝配依賴于其提供的starter依賴,這些starter依賴包含了Spring應用所需的大部分配置,使得開發(fā)者不需要手動配置這些通用的功能。

如果我們這么回答,可能面試官聽到就不是很滿意了,這時候,我們就得抓住要點來進行分析,這樣回答的時候,勢必肯定能抓到重點,畢竟面試的時候,每個人的回答肯定也都是不一樣的。

1.約定優(yōu)于配置

2.核心注解

3.自動掃描

我們來一個一個的解釋這些內(nèi)容指的到底是什么意思:

約定優(yōu)于配置

SpringBoot的約定優(yōu)于配置(Convention Over Configuration)主要體現(xiàn)在以下幾個方面:

自動配置:SpringBoot根據(jù)項目的類路徑下的jar包依賴關系,自動配置相應的Bean。例如,當檢測到HSQLDB數(shù)據(jù)庫驅(qū)動在類路徑下時,它會自動配置一個嵌入式數(shù)據(jù)庫實例和相關的JPA/Hibernate設置。

目錄結構約定:SpringBoot遵循一定的目錄結構約定,使得開發(fā)者可以將代碼和資源放在約定的目錄下,而不需要在配置文件中指定。例如,靜態(tài)資源默認放在src/main/resources/static或src/main/resources/public目錄下,模板文件默認在src/main/resources/templates下。

Starter依賴:SpringBoot提供了一系列的Starter依賴,這些Starter依賴是預定義的依賴集合。通過引入相應的Starter依賴,可以自動引入相關的庫和默認配置,從而簡化了項目的依賴管理。例如,通過引入spring-boot-starter-web依賴,就能夠快速搭建一個基于Spring MVC的Web應用。

核心注解EnableAutoConfiguration

EnableAutoConfiguration 是 Spring Boot 的核心注解之一,它告訴 Spring Boot 根據(jù)你添加的 jar 依賴項自動配置你的應用程序。Spring Boot 會自動配置許多方面,例如數(shù)據(jù)源、消息代理、安全設置等,你通常不需要手動設置它們。

這個注解的工作原理是基于在項目的類路徑(classpath)中查找特定的 jar 依賴項。一旦找到這些依賴項,Spring Boot 就會自動配置相關的 bean。這減少了大量手動配置和樣板代碼的需求,使開發(fā)者能夠?qū)W⒂谒麄兊膽贸绦蜻壿嫛?/p>

@EnableAutoConfiguration 注解通常放在主應用程序類上,這是帶有 main 方法的類,該類使用 SpringApplication.run() 方法啟動 Spring Boot 應用程序。

這里是 @EnableAutoConfiguration 注解的基本用法:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableAutoConfiguration
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

在這個例子中,@EnableAutoConfiguration 注解啟動了自動配置。Spring Boot 會根據(jù)類路徑中的 jar 依賴項來自動配置 bean。

那么EnableAutoConfiguration 是如何工作的呢?

@EnableAutoConfiguration 注解實際上是一個組合注解,它包含了 @AutoConfigurationPackage 和 @Import(AutoConfigurationImportSelector.class)。

@AutoConfigurationPackage 注解確保 @Configuration 類(通常位于主應用程序類中)被考慮在內(nèi),以便它可以被自動配置的 beans 使用。@Import(AutoConfigurationImportSelector.class) 注解告訴 Spring Boot 從 META-INF/spring.factories 配置文件中加載 auto-configuration 類。Spring Boot 提供了許多這樣的配置文件,每個文件都針對特定的技術或功能(如數(shù)據(jù)源、Web MVC 等)。當 Spring Boot 啟動時,它會加載 META-INF/spring.factories 配置文件,并根據(jù)你的類路徑中的依賴項選擇適當?shù)淖詣优渲妙?。然后,這些自動配置類會注冊額外的 beans 到 Spring 的上下文中。

如果你不想使用某個特定的自動配置,你可以使用 @EnableAutoConfiguration 注解的 exclude 屬性來排除它。

比如我們排除某個特定的自動配置

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

總之,@EnableAutoConfiguration 注解是 Spring Boot 的核心特性之一,它簡化了 Spring 應用程序的配置過程,使開發(fā)者能夠?qū)W⒂趯崿F(xiàn)業(yè)務邏輯。

自動掃描

Spring Boot 的自動掃描是 Spring 框架的一個特性,在 Spring Boot 中得到了進一步的簡化和增強。它允許 Spring Boot 應用程序自動發(fā)現(xiàn)和注冊 bean,減少了開發(fā)者需要手動配置和聲明 bean 的數(shù)量。

那自動掃描都做了哪些事情呢?

組件掃描:默認情況下,Spring Boot 會掃描啟動類(通常是帶有 @SpringBootApplication 注解的類)所在的包以及其子包下的所有類。它會查找?guī)в?@Component、@Service、@Repository 和 @Controller 等注解的類,并將它們作為 Spring 容器中的 bean 進行注冊。

配置類掃描:除了普通的組件,Spring Boot 還會掃描 @Configuration 注解的類,這些類通常包含 @Bean 方法定義,用于聲明和配置額外的 bean。

自動配置類掃描:Spring Boot 還會掃描 META-INF/spring.factories 配置文件,以加載和應用自動配置類。這些自動配置類通常根據(jù)類路徑下的庫和依賴項來提供默認的配置。

資源掃描:除了組件和配置類,Spring Boot 還會自動掃描靜態(tài)資源,如 HTML、CSS、JavaScript 文件以及模板文件(如 Thymeleaf、FreeMarker 等)。這些資源通常放在特定的目錄下,如 src/main/resources/static 或 src/main/resources/templates。

要開啟或調(diào)整組件掃描的范圍,你可以使用 @ComponentScan 注解。

這個注解我們都不用多說了把,指明掃包路徑

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.example.myapp") // 指定掃描的包路徑
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}
責任編輯:武曉燕 來源: Java極客技術
相關推薦

2023-11-01 09:07:01

Spring裝配源碼

2011-07-01 14:12:57

SEO

2016-01-05 13:41:59

物聯(lián)網(wǎng)內(nèi)容硬件

2022-02-07 11:01:23

ZooKeeper

2023-01-03 08:31:54

Spring讀取器配置

2020-12-19 16:12:58

操作系統(tǒng)計算機科學

2020-05-21 12:59:51

邊緣存儲存儲物聯(lián)網(wǎng)

2015-03-17 15:13:26

Cocos

2024-05-29 07:47:30

SpringJava@Resource

2017-06-27 14:15:22

LinuxShellsed

2022-01-02 08:43:46

Python

2021-08-01 07:19:16

語言OpenrestyNginx

2022-06-30 22:53:18

數(shù)據(jù)結構算法

2021-10-26 10:40:26

代理模式虛擬

2021-12-04 22:05:02

Linux

2022-05-17 08:02:55

GoTryLock模式

2021-05-11 08:54:59

建造者模式設計

2021-07-05 22:11:38

MySQL體系架構

2021-07-06 08:59:18

抽象工廠模式

2022-08-26 09:29:01

Kubernetes策略Master
點贊
收藏

51CTO技術棧公眾號