不久前在學習Spring Cloud的相關知識,原本準備基于Spring Cloud來搭建自己的網站的,但最近工作實在有點繁忙,看書斷斷續續的,書包里的kindle強行撐了兩個多禮拜沒關機,現在對于之前看的東西已經忘了不少,因此現在把做的筆記以及編寫的demo都記錄下來,以便分享給他人(其實我知道沒人看)以及自己后續翻看復習。
Spring簡介
在說Spring Boot之前大家應該都聽說過Spring。
Spring框架是一個輕量級的企業級開發的一站式解決方案。
所謂解決方案就是可以基于Spring解決JavaEE開發的所有問題。Spring框架主要提供了IoC容器、AOP、數據訪問、Web開發、消息、測試等相關技術的支持。
Spring使用簡單的POJO(Plain Old Java Object)來進行企業級開發。每一個被Spring管理的Java對象都稱之為Bean;而Spring提供了一個IoC容器來初始化對象,解決對象之間的依賴管理和對象的使用。
Spring目前提供了大量的基于Spring的項目,如我本文要講述的SpringBoot以及基于Spring Boot而產生的Spring Cloud:
- Spring Boot:使用默認開發配置來實現快速開發;
- Spring Cloud:為分布式系統開發提供工具集;
Spring框架本身又四大原則:
- 使用POJO進行輕量級和最小侵入式開發;
- 通過依賴注入和基于接口變成實現松耦合;
- 通過AOP和默認習慣進行聲明式編程;
- 使用AOP和模板(template)減少模式化代碼;
Spring所有功能的設計和實現都是基于此四大原則的。
Spring Boot概述
相對于我們傳統常用的SpringMVC的一大堆繁瑣的xml配置,Spring Boot的“習慣優于配置”理念使得我們很容易創建一個獨立運行的,準生產級別的基于Spring框架項目。其核心功能包括以下幾點:
- 獨立運行的Spring項目:可以通過jar包形式運行,即java -jar xx.jar;
- 內嵌servlet容器,無需以war包形式部署項目;
- 提供starter簡化Maven配置:Spring提供了一系列的starter pom簡化maven的依賴加載,后文創建Spring Boot項目會看出來;
- 自動配置Spring:Spring Boot會根據在類路徑中的jar包、類,為jar包中的類自動配置Bean,這樣會極大的減少我們使用的配置。
- 準生產的應用監控;
- 無代碼生產和xml配置:Spring Boot的神奇不是借助代碼生成實現的,而是通過條件注解來實現。這是Spring4.x的新特性,在這,Spring4.x提倡使用Java配置和注解配置組合,Spring Boot不需要任何xml配置額即可實現Spring所有配置。
Spring Boot快速搭建
本人使用的開發工具是IDEA,創建Spring Boot項目也比較方便,也推薦大家使用此工具,顏值高,開發體驗也很好。
1新建Spring Initializr項目
2.填寫項目信息,選擇項目使用技術,我們這里選擇Web就可以了,填好項目名稱,finish。
至此,項目搭建結束,其項目依賴如圖:
同時我們可以看到,在我們groupId+artifactId組合包名下有個入口類:
我們啟動該類中的main方法,這里即是啟動本項目:
控制臺打印輸出啟動成功,我們為了能看到頁面效果,給該類加上@RestController注解,并添加index方法:
再次啟動項目,訪問localhost:8080 如圖所示
通過查看源碼可以發現,我們這里的*Application的入口類上的注解@SpringBootApplication注解實際上是組合了@Configuration、@EnableAutoConfiguration、@ComponentScan這幾個注解,若不適用@SpringBootApplication,也可使用這三個注解代替。其中@EnableAutoConfiguration讓Spring Boot根據類路徑中的jar包依賴為當前項目進行自動配置。
Spring Boot會自動掃描@SpringBootApplication所在類的同級包,因此建議入口類防止在groupId+artifactId組合包名下。
這里也順便講個有意思的東西,我們啟動Spring Boot的時候是有個默認啟動圖案的,其實這個是可以換的,我們在src/main/resources下新建一個banner.txt,然后去http://patorjk.com/software/taag 網站生成字符,然后將字符復制到banner.txt中,我寫的是LEAFW,再次啟動如圖:
以上,即為Spring Boot學習第一章節,也是最最最最為基礎的東西,后續會更新進一步的學習筆記。
本博客中所有相關代碼已上傳至本人GitHub的leafw-blog-demo項目下,如有需要可下載查看。本文對應的為springboot_1目錄。
本文參考書籍:博文視點-Spring Boot實戰