亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Spring Boot 項目啟動機制

1. 前言

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

上面兩個問題,正是理解 Spring Boot 的關鍵!

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

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

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

圖片描述

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

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

2. Spring Boot 是如何啟動的

Spring Boot 項目生成后,只有簡簡單單一個類,簡單優雅,賞心悅目!

實例:

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

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

SpringApplication.run 看字面意思就知道,這是 Spring 應用的啟動方法,運行該行代碼后, Spring 應用就跑起來了。

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

這個類有啥信息啊?放眼看去,除了一個類名、一個靜態方法外,并無其他。憑這些信息就能啟動 Spring 應用?

等等,好像還有一個注解 @SpringBootApplication ,該注解是標注在類上的,屬于類的信息。嗯,看來 Spring Boot 啟動的秘密就在這個注解上了。

3. 神奇的 @SpringBootApplication 注解

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

實例:

@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 {
}

看起來很復雜,其實就是一個組合注解,包含了多個注解的功能,咱們來分析一下。

首先是 @SpringBootConfiguration 注解,它繼承自 @Configuration 注解,功能也跟 @Configuration 一樣。它會將當前類標注為配置類了,我們在啟動類中配置 Bean 就可以生效了。

其次是 @ComponentScan 注解,用來指定我們要掃描的包,以便發現 Bean 。注意在默認情況下, SpringBoot 掃描該注解標注類所在包及其子包。當我們的控制器、服務類等 Bean 放到不同的包中時,就需要通過 @ComponentScan 注解指定這些包,以便發現 Bean 。

最重要的是 @EnableAutoConfiguration 注解,用來啟動自動配置。開啟自動配置后, Spring Boot 會掃描項目中所有的配置類,然后根據配置信息啟動 Spring 容器。

擁有了 @SpringBootConfiguration ,我們就擁有了一個可以拿來即用的 Spring 容器環境了。

4. 視頻演示

5. 小結

Spring Boot 實際上就是 Spring 應用的快速開發版本,可以一鍵啟動整個 Spring 容器供我們使用。

圖片描述

Spring Boot 準備好了,讓我們開始啟動吧?。▓D片來源于網絡,版權歸原作者所有)

我們運行下啟動類,可以看到一個顯眼的圖案,它是 Spring Boot 的啟動標志。接下來我們就可以,使用 Spring Boot ,來開發我們的應用了!

圖片描述