一、SpringBoot簡介
SpringBoot是一個簡化Spring開發的應用集成框架,也是j2ee一站式解決方案。它采用約定大於配置的開發原則,去繁就簡,能夠快速的開發一個應用。在使用SpringBoot進行開發時只需要載入相應的場景啟動器starter就可以進行應用開發,SpringBoot將幾乎所有的功能場景都抽取出來,做成一個個的starter(場景啟動器),只需要在項目里面引入這些starter相關場景的所有依賴就會導入進來。要用什么功能就導入什么場景的啟動器。
在不用SpringBoot進行應用開發之前,我們開發應用會配置大量的xml文件,現在不用我們自己手動的去寫一堆xml配置,應用大多采用springboot的默認配置即可滿足需求,如果不滿足需求我們也可以修改默認配置來使其滿足我們的需要。
二、優點
SpringBoot的優點如下圖所示:

三、單體應用與微服務
單體應用是把所有的應用模塊都寫在一個應用中,這樣方便了開發與測試,但是當需求不停的增加膨脹時就會導致項目越寫越大,模塊之間的耦合度也會越來越高,這樣就導致項目變得越來越臃腫,越來越難以維護。
微服務是一種架構風格,用微服務可以將應用的模塊單獨部署,對不同的模塊進行不同的管理操作,不同的模塊生成小型服務,每個功能元素最后都可以成為一個可以獨立替換、獨立升級的功能單元,各個小型服務之間通過http協議進行通信。
四、springboot的核心特點
1、微服務:使用SpringBoot可以生成獨立的微服務功能單元。
2、自動配置:針對很多Spring常見的應用功能,SpringBoot都提供了相關的默認配置,在開發時只需要做少量的配置即可進行應用程序開發。
3、場景啟動器starter:需要什么功能就導入相應的starter,即可完成相應依賴包的導入。
4、Actuator:可以在生產環境中監控當前應用程序狀態,例如程序的健康,虛擬機等信息,並且可以將這些監控信息通過前端以可視化的界面展示出來,以便實時掌握程序的運行情況。
五、helloworld案例

運行結果截圖:

可以將應用打包成可執行的jar,簡化了部署,需要在pom.xml文件中添加如下插件:
<build>
<plugins>
<!-- 簡化部署,可以將應用打包成一個jar包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
運行項目時cmd進入項目目錄,執行 java -jar demo-0.0.1-SNAPSHOT.jar 即可啟動項目。
解析:
每一個springboot的運行都是從springboot的入口類開始執行的。
@SpringBootApplication //啟動注解 用來標注主程序類 說明這是一個springboot應用
@ComponentScan(basePackages = {"com.test.demo.controller"}) //組件掃描,只要是標注了@Service等注解的都掃描注入到ioc容器中
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
// 需要注意的是:java代碼必須和啟動類在同一目錄下
啟動類注解解析:
1.程序從main方法開始運行
2.使用SpringApplication.run()加載主程序類
3.主程序需要標注@SpringBootApplication,表示這是一個springboot應用
4.@EnableAutoConfiguration是springboot的核心注解,即自動配置,相關的自動配置都是由這個注解完成
5.@Import({AutoConfigurationImportSelector.class}) 導入所有的自動配置場景
6.@AutoConfigurationPackage定義默認的包掃描規則
7.程序啟動掃描加載主程序類所在的包以及下面所有子包的組件
AutoConfigurationPackage:
自動掃描@SpringBootApplication標記的主類,在主類所在包或者所在的子包下面找相應的控制類,然后根據相應的注解自動配置相應的項目所需的bean。

其實springboot就是幫我們整合集成了很多開發場景,把這些場景做成一個個的starter,我們開發應用時直接導入即可,從而讓我們的開發變得更加簡單快速,其核心還是Spring框架基礎。
參考博文:
(1) https://baijiahao.baidu.com/s?id=1623648034778672046&wfr=spider&for=pc
(2) https://www.cnblogs.com/nevermorewang/p/9053504.html (對springboot的理解)
(3) https://www.zhihu.com/question/39483566 (知乎上對springboot的理解的討論)
(4) https://docs.spring.io/spring-boot/docs/current/reference/html/ (springboot官網doc)
