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

一篇學會SpringBoot的核心內容之自動裝配

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

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

SpringBoot裝配機制

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

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

1.約定優于配置

2.核心注解

3.自動掃描

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

約定優于配置

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

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

目錄結構約定:SpringBoot遵循一定的目錄結構約定,使得開發者可以將代碼和資源放在約定的目錄下,而不需要在配置文件中指定。例如,靜態資源默認放在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 根據你添加的 jar 依賴項自動配置你的應用程序。Spring Boot 會自動配置許多方面,例如數據源、消息代理、安全設置等,你通常不需要手動設置它們。

這個注解的工作原理是基于在項目的類路徑(classpath)中查找特定的 jar 依賴項。一旦找到這些依賴項,Spring Boot 就會自動配置相關的 bean。這減少了大量手動配置和樣板代碼的需求,使開發者能夠專注于他們的應用程序邏輯。

@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 會根據類路徑中的 jar 依賴項來自動配置 bean。

那么EnableAutoConfiguration 是如何工作的呢?

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

@AutoConfigurationPackage 注解確保 @Configuration 類(通常位于主應用程序類中)被考慮在內,以便它可以被自動配置的 beans 使用。@Import(AutoConfigurationImportSelector.class) 注解告訴 Spring Boot 從 META-INF/spring.factories 配置文件中加載 auto-configuration 類。Spring Boot 提供了許多這樣的配置文件,每個文件都針對特定的技術或功能(如數據源、Web MVC 等)。當 Spring Boot 啟動時,它會加載 META-INF/spring.factories 配置文件,并根據你的類路徑中的依賴項選擇適當的自動配置類。然后,這些自動配置類會注冊額外的 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 應用程序的配置過程,使開發者能夠專注于實現業務邏輯。

自動掃描

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

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

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

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

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

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

要開啟或調整組件掃描的范圍,你可以使用 @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

2022-02-07 11:01:23

ZooKeeper

2016-01-05 13:41:59

物聯網內容硬件

2023-01-03 08:31:54

Spring讀取器配置

2020-05-21 12:59:51

邊緣存儲存儲物聯網

2020-12-19 16:12:58

操作系統計算機科學

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-12-04 22:05:02

Linux

2021-10-26 10:40:26

代理模式虛擬

2022-05-17 08:02:55

GoTryLock模式

2022-06-30 22:53:18

數據結構算法

2021-08-01 07:19:16

語言OpenrestyNginx

2021-09-28 08:59:30

復原IP地址

2021-10-14 10:22:19

逃逸JVM性能

2022-04-12 08:30:52

回調函數代碼調試

2021-07-16 22:43:10

Go并發Golang
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看中文字幕视频 | 91亚洲精品在线 | 国产视频二区在线观看 | 欧美成人视屏 | 久久噜噜噜精品国产亚洲综合 | 国产精品18久久久 | 一二三四av| 午夜视频一区二区三区 | 天天操天天操 | 国产剧情一区 | 欧美性大战xxxxx久久久 | 伊人久久大香线 | 欧美日韩视频一区二区 | 国产精品久久久久久久久动漫 | 亚洲欧美在线一区 | 久草在线在线精品观看 | 一级h片 | 国产精品日韩在线观看 | 国产激情一区二区三区 | 亚洲精品福利视频 | 久久精品99国产精品日本 | 国产精品一区二区三区久久 | 久久久精品视频免费看 | 久久久久亚洲 | 国产成人精品一区二区三区视频 | 欧美综合国产精品久久丁香 | 久久激情网 | 国产精品99久久久久久宅男 | 久久精品99国产精品日本 | 黑人精品 | 国产精品视频一区二区三区 | 在线第一页 | 91视频三区 | 亚洲精品视频免费观看 | 成人久久视频 | 国产精品久久久久久久三级 | 国产欧美精品一区二区 | 99精品国自产在线 | 蜜桃免费一区二区三区 | 午夜电影在线播放 | 成人精品高清 |