成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇學(xué)會(huì)SpringBoot的核心內(nèi)容之自動(dòng)裝配

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

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

SpringBoot裝配機(jī)制

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

如果我們這么回答,可能面試官聽(tīng)到就不是很滿意了,這時(shí)候,我們就得抓住要點(diǎn)來(lái)進(jìn)行分析,這樣回答的時(shí)候,勢(shì)必肯定能抓到重點(diǎn),畢竟面試的時(shí)候,每個(gè)人的回答肯定也都是不一樣的。

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

2.核心注解

3.自動(dòng)掃描

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

約定優(yōu)于配置

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

自動(dòng)配置:SpringBoot根據(jù)項(xiàng)目的類路徑下的jar包依賴關(guān)系,自動(dòng)配置相應(yīng)的Bean。例如,當(dāng)檢測(cè)到HSQLDB數(shù)據(jù)庫(kù)驅(qū)動(dòng)在類路徑下時(shí),它會(huì)自動(dòng)配置一個(gè)嵌入式數(shù)據(jù)庫(kù)實(shí)例和相關(guān)的JPA/Hibernate設(shè)置。

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

Starter依賴:SpringBoot提供了一系列的Starter依賴,這些Starter依賴是預(yù)定義的依賴集合。通過(guò)引入相應(yīng)的Starter依賴,可以自動(dòng)引入相關(guān)的庫(kù)和默認(rèn)配置,從而簡(jiǎn)化了項(xiàng)目的依賴管理。例如,通過(guò)引入spring-boot-starter-web依賴,就能夠快速搭建一個(gè)基于Spring MVC的Web應(yīng)用。

核心注解EnableAutoConfiguration

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

這個(gè)注解的工作原理是基于在項(xiàng)目的類路徑(classpath)中查找特定的 jar 依賴項(xiàng)。一旦找到這些依賴項(xiàng),Spring Boot 就會(huì)自動(dòng)配置相關(guān)的 bean。這減少了大量手動(dòng)配置和樣板代碼的需求,使開(kāi)發(fā)者能夠?qū)W⒂谒麄兊膽?yīng)用程序邏輯。

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

這里是 @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);
    }
}

在這個(gè)例子中,@EnableAutoConfiguration 注解啟動(dòng)了自動(dòng)配置。Spring Boot 會(huì)根據(jù)類路徑中的 jar 依賴項(xiàng)來(lái)自動(dòng)配置 bean。

那么EnableAutoConfiguration 是如何工作的呢?

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

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

如果你不想使用某個(gè)特定的自動(dòng)配置,你可以使用 @EnableAutoConfiguration 注解的 exclude 屬性來(lái)排除它。

比如我們排除某個(gè)特定的自動(dòng)配置

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 的核心特性之一,它簡(jiǎn)化了 Spring 應(yīng)用程序的配置過(guò)程,使開(kāi)發(fā)者能夠?qū)W⒂趯?shí)現(xiàn)業(yè)務(wù)邏輯。

自動(dòng)掃描

Spring Boot 的自動(dòng)掃描是 Spring 框架的一個(gè)特性,在 Spring Boot 中得到了進(jìn)一步的簡(jiǎn)化和增強(qiáng)。它允許 Spring Boot 應(yīng)用程序自動(dòng)發(fā)現(xiàn)和注冊(cè) bean,減少了開(kāi)發(fā)者需要手動(dòng)配置和聲明 bean 的數(shù)量。

那自動(dòng)掃描都做了哪些事情呢?

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

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

自動(dòng)配置類掃描:Spring Boot 還會(huì)掃描 META-INF/spring.factories 配置文件,以加載和應(yīng)用自動(dòng)配置類。這些自動(dòng)配置類通常根據(jù)類路徑下的庫(kù)和依賴項(xiàng)來(lái)提供默認(rèn)的配置。

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

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

這個(gè)注解我們都不用多說(shuō)了把,指明掃包路徑

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);
    }
}
責(zé)任編輯:武曉燕 來(lái)源: Java極客技術(shù)
相關(guān)推薦

2023-11-01 09:07:01

Spring裝配源碼

2011-07-01 14:12:57

SEO

2022-02-07 11:01:23

ZooKeeper

2016-01-05 13:41:59

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

2023-01-03 08:31:54

Spring讀取器配置

2020-05-21 12:59:51

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

2020-12-19 16:12:58

操作系統(tǒng)計(jì)算機(jī)科學(xué)

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-10-26 10:40:26

代理模式虛擬

2021-12-04 22:05:02

Linux

2022-05-17 08:02:55

GoTryLock模式

2022-06-30 22:53:18

數(shù)據(jù)結(jié)構(gòu)算法

2021-08-01 07:19:16

語(yǔ)言OpenrestyNginx

2021-07-02 08:51:29

源碼參數(shù)Thread

2021-09-28 08:59:30

復(fù)原IP地址

2021-10-14 10:22:19

逃逸JVM性能

2022-04-12 08:30:52

回調(diào)函數(shù)代碼調(diào)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲福利视频一区二区 | 国产精品久久久久久久久久免费看 | 特级毛片www| 国产综合区 | 国产精品乱码一区二三区小蝌蚪 | 亚洲高清在线观看 | 亚洲天堂一区二区 | 国产探花在线精品一区二区 | 91精品免费视频 | 国产成人免费视频网站高清观看视频 | 国产精品69av | 一级高清视频 | 国产精品一区二区久久 | 久久久女女女女999久久 | 成人看片在线观看 | 国产伦精品一区二区三区四区视频 | 日韩av成人| 在线播放国产视频 | 呦呦在线视频 | 很黄很污的网站 | 日韩免费看视频 | 91久久精品国产 | 粉嫩粉嫩芽的虎白女18在线视频 | 99精品电影 | 亚州无限乱码 | 国产一区二区三区高清 | 日韩视频精品 | 国产伦精品一区二区三区视频金莲 | 国产精品黄色 | 97视频在线免费 | 日本午夜免费福利视频 | 久久综合狠狠综合久久 | 男人av网 | k8久久久一区二区三区 | 精品一二区 | 日韩在线精品视频 | 免费成人在线网站 | 91就要激情 | 成人av免费在线观看 | 国产精品日日做人人爱 | 欧美不卡视频 |