在這部分,會(huì)創(chuàng)建一個(gè)最簡(jiǎn)單的Spring例子。通過(guò)這個(gè)例子,來(lái)具體講解Spring項(xiàng)目的架構(gòu)。
一、 創(chuàng)建Spring項(xiàng)目
我們選擇在Ideal中創(chuàng)建Spring項(xiàng)目。
首先在New project中選擇 Spring Initalizr,Spring Initalizr是一個(gè)基于瀏覽器的Web應(yīng)用,同時(shí)是一個(gè)開(kāi)放的Rest API,可以通過(guò)它來(lái)初始化應(yīng)用。

在下一步中設(shè)定項(xiàng)目的相關(guān)信息,可以采用默認(rèn)值。

下一步中指定Spring項(xiàng)目所需的依賴。對(duì)于所選的依賴,都是默認(rèn)選擇的最新版本。我們選擇的依賴如下。

最后就是指定項(xiàng)目地址。點(diǎn)擊結(jié)束完成項(xiàng)目構(gòu)建。
項(xiàng)目創(chuàng)建好后,依賴下載需要較長(zhǎng)時(shí)間,請(qǐng)耐心等待。
二、 項(xiàng)目結(jié)構(gòu)
新建項(xiàng)目的結(jié)構(gòu)如圖。

可以見(jiàn)到這是一個(gè)典型的Maven項(xiàng)目。包括了source、resources和test幾個(gè)類型的包,還有比較常用的pom.xml文件,用于配置項(xiàng)目的構(gòu)建和依賴等。
《spring實(shí)戰(zhàn)》中對(duì)pom文件進(jìn)行了說(shuō)明,對(duì)于構(gòu)建配置,其中特別提到對(duì)于應(yīng)用于云平臺(tái)的應(yīng)用,推薦打包為jar格式,對(duì)于傳統(tǒng)的java服務(wù)器應(yīng)用,一般打包為war包。
在 DemoApplication 主類和 已經(jīng)給出了部分代碼,盡管目前我們還沒(méi)有做任何編碼,沒(méi)有實(shí)現(xiàn)任何功能,但項(xiàng)目已經(jīng)可以啟動(dòng)了。這是spring boot的強(qiáng)大之處。
DemoApplicationTests也已經(jīng)給出了部分測(cè)試代碼,能夠用它來(lái)模擬一個(gè)測(cè)試環(huán)境,對(duì)主程序代碼開(kāi)展測(cè)試工作。
三、 主要類說(shuō)明
1. 主類的說(shuō)明
目前在主類中,代碼很少,只有一個(gè)用于啟動(dòng)項(xiàng)目的main方法。但在spring boot中,整合了一個(gè)很強(qiáng)大的注解,就是@SpringBootApplication。
@SpringBootApplication 注解在spring boot中整合了三個(gè)以前版本常用的注解,分別是:
(1) @SpringBootConfiguration:聲明這個(gè)類是配置類。
(2) @EnableAutoConfiguration:啟動(dòng)Spring boot 的自動(dòng)配置。spring boot會(huì)自動(dòng)配置可能會(huì)用到的組件。
(3) @ComponentScan: 啟動(dòng)組件掃描。這是個(gè)很有用的注解,它可以使Spring 掃描帶有 @Component、@Controller、@Service 這樣的聲明類,spring會(huì)自動(dòng)將這些類注冊(cè)。
在main方法中,調(diào)用了SpringApplication類的run()方法,啟動(dòng)了應(yīng)用程序。
2. 測(cè)試類的說(shuō)明
Spring Initializr 提供了測(cè)試類,用于自動(dòng)化測(cè)試。

自動(dòng)化測(cè)試是現(xiàn)代軟件開(kāi)發(fā)的必然要求,是保證代碼質(zhì)量的基本手段。SpringBoot在此方面提供了很多便利。
可以點(diǎn)擊IDE左側(cè)的run test按鈕,試著運(yùn)行這個(gè)測(cè)試??梢钥吹竭@個(gè)測(cè)試加載了上下文環(huán)境,并且測(cè)試已經(jīng)成功。

目前這個(gè)測(cè)試類什么都沒(méi)做,只是通過(guò)@SpringBootTest注解,來(lái)告訴JUnit在啟動(dòng)的時(shí)候,要加上Spring boot功能。啟動(dòng)測(cè)試后,會(huì)加載Spring 應(yīng)用上下文。

Junit是java下一個(gè)常用的測(cè)試框架,主要用于java的自動(dòng)化測(cè)試。Spring整合了Junit的功能,另外做了增強(qiáng),能夠通過(guò) @SpringBootTest注解來(lái)啟動(dòng)spring環(huán)境下的自動(dòng)化測(cè)試,后續(xù)將看到這個(gè)注解的威力。
四、 運(yùn)行
目前我們已經(jīng)可以運(yùn)行這個(gè)應(yīng)用程序了。點(diǎn)擊IDE上的運(yùn)行按鈕,在控制臺(tái)中可以看到應(yīng)用啟動(dòng)的日志。Spring boot會(huì)啟動(dòng)自帶的Tomcat容器,提供了應(yīng)用運(yùn)行的環(huán)境。SpringBoot使得我們能夠快速構(gòu)建一個(gè)基本應(yīng)用。
后面我們還是結(jié)合《實(shí)戰(zhàn)》,講解一下Spring的基本概念。