第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 Spring Boot 入門教程 Spring Boot 入門教程 Spring Boot 項(xiàng)目啟動(dòng)機(jī)制

Spring Boot 項(xiàng)目啟動(dòng)機(jī)制

1. 前言

很多同學(xué),學(xué)了很久的 Spring ,也用了很久的 Spring ,卻還是不知道 Spring 是什么?Spring 中 XML / 注解 / Java 類三種配置方式,有什么區(qū)別和聯(lián)系。

上面兩個(gè)問題,正是理解 Spring Boot 的關(guān)鍵!

Spring 本質(zhì)上是一個(gè)容器,里面存放的是 Java 對(duì)象,放入容器的 Java 對(duì)象被稱為 Spring 組件(Bean)。

而 XML / 注解 / Java 類三種配置方式,只是形式不同,目的都是在容器中注冊(cè) Bean 。三種方式可以同時(shí)使用,只是需要注意, Bean 命名不要發(fā)生沖突。

當(dāng)我們使用 Spring Boot 時(shí)會(huì)有變化嗎?實(shí)際上,容器還是那個(gè)容器,配置也還是那三種配置。當(dāng)然 Spring Boot 本身就是為了簡化配置,所以基本不再使用 XML 配置方式了。

圖片描述

大海是魚類的容器,地球是人類的容器,容器化的思想是普通存在的(圖片來源于網(wǎng)絡(luò),版權(quán)歸原作者所有)

我們打個(gè)比方, Spring 是插鑰匙啟動(dòng)的轎車,而 Spring Boot 是無鑰匙啟動(dòng)的轎車。功能和原理是幾乎一樣的, Spring Boot 更加簡單方便而已。

2. Spring Boot 是如何啟動(dòng)的

Spring Boot 項(xiàng)目生成后,只有簡簡單單一個(gè)類,簡單優(yōu)雅,賞心悅目!

實(shí)例:

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

我們來分析下這段代碼, public static void main 是普通的 main 方法,是程序執(zhí)行的入口。

SpringApplication.run 看字面意思就知道,這是 Spring 應(yīng)用的啟動(dòng)方法,運(yùn)行該行代碼后, Spring 應(yīng)用就跑起來了。

這個(gè)方法有兩個(gè)參數(shù), args 是命令行參數(shù),此處沒啥作用;另一個(gè)參數(shù)是 SpringBootHelloApplication.class ,包含類的信息。

這個(gè)類有啥信息???放眼看去,除了一個(gè)類名、一個(gè)靜態(tài)方法外,并無其他。憑這些信息就能啟動(dòng) Spring 應(yīng)用?

等等,好像還有一個(gè)注解 @SpringBootApplication ,該注解是標(biāo)注在類上的,屬于類的信息。嗯,看來 Spring Boot 啟動(dòng)的秘密就在這個(gè)注解上了。

3. 神奇的 @SpringBootApplication 注解

我們來看看這個(gè)注解到底是何方神圣!在 Eclipse 中選中該注解,按 F3 即可查看其定義。

實(shí)例:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
}

看起來很復(fù)雜,其實(shí)就是一個(gè)組合注解,包含了多個(gè)注解的功能,咱們來分析一下。

首先是 @SpringBootConfiguration 注解,它繼承自 @Configuration 注解,功能也跟 @Configuration 一樣。它會(huì)將當(dāng)前類標(biāo)注為配置類了,我們?cè)趩?dòng)類中配置 Bean 就可以生效了。

其次是 @ComponentScan 注解,用來指定我們要掃描的包,以便發(fā)現(xiàn) Bean 。注意在默認(rèn)情況下, SpringBoot 掃描該注解標(biāo)注類所在包及其子包。當(dāng)我們的控制器、服務(wù)類等 Bean 放到不同的包中時(shí),就需要通過 @ComponentScan 注解指定這些包,以便發(fā)現(xiàn) Bean 。

最重要的是 @EnableAutoConfiguration 注解,用來啟動(dòng)自動(dòng)配置。開啟自動(dòng)配置后, Spring Boot 會(huì)掃描項(xiàng)目中所有的配置類,然后根據(jù)配置信息啟動(dòng) Spring 容器。

擁有了 @SpringBootConfiguration ,我們就擁有了一個(gè)可以拿來即用的 Spring 容器環(huán)境了。

4. 視頻演示

5. 小結(jié)

Spring Boot 實(shí)際上就是 Spring 應(yīng)用的快速開發(fā)版本,可以一鍵啟動(dòng)整個(gè) Spring 容器供我們使用。

圖片描述

Spring Boot 準(zhǔn)備好了,讓我們開始啟動(dòng)吧?。▓D片來源于網(wǎng)絡(luò),版權(quán)歸原作者所有)

我們運(yùn)行下啟動(dòng)類,可以看到一個(gè)顯眼的圖案,它是 Spring Boot 的啟動(dòng)標(biāo)志。接下來我們就可以,使用 Spring Boot ,來開發(fā)我們的應(yīng)用了!

圖片描述