Spring Boot 零基礎上手系列一

近期給大家分享了關於微服務的一些個人理解,顯然需要理論結合實踐來深化我們的內功,那如何快速構建微服務呢?

業界比較流行的兩種方式是通過Dubbo或者Spring Cloud,而Spring Cloud的基礎是Srping Boot,為了更好的理解微服務實戰,我們就先一起來了解一下Spring Boot吧。

Spring Boot的定義

Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring.

上面是引自官網的一段話,大概是說:Spring Boot是所有基於Spring開發的項目的起點。Spring Boot 的設計初衷是為了讓你儘可能快的跑起來 Spring 應用程序並且儘可能減少你的配置文件。

Spring Boot的優點

對於很多Spring框架的使用者,特別是初學者來說, 經常會因為其複雜的配置文件而煩惱。

而Spring Boot的出現可以有效改善這類問題,其宗旨並非要重寫Spring或是替代Spring, 而是希望通過大量的自動化配置等方式來簡化Spring原有樣板化的配置, 使得開發者可以快速構建應用。類似於用戶使用的手機,通過在應用市場下載諸如微信、支付寶和網易雲音樂等應用,來滿足用戶對社交、支付和音樂方面的追求,正如Spring Boot通過相關注釋標註,將常用的功能加載的自身容器中,擴充了自己的業務能力,如下所示:

`# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.cloud.CloudServiceConnectorsAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration,\

除了解決配置問題之外, Spring Boot還通過一系列類似模塊化的Starter定義,使功能整合變得簡單易上手, 無需在Maven的pom.xml中維護那些錯綜複雜的依賴關係。這就類似日常的就餐搭配,不同的用戶有不同的需求,諸如瘦身、健康和月子恢復等,根據目的的不同,費勁心思的搭配菜樣來保證目標的落地,也可以直接選擇默認的瘦身套餐、健康套餐和月子恢復套餐等,在省心省力的基礎上同樣達到追求的目標,很明顯,對於懶人一族,方式二是更容易做出的選擇,類似Spring Boot的模塊化Starter定義,對於web應用,用戶可以直接選擇spring-boot-starter-web依賴來快速引入web應用開發所需要的Jar。

Spring Boot的快速開發

Spring Boot工程與普通的maven/gradle工程無異,只是在依賴中需要添加對Spring Boot的依賴。不過有一種更簡單的方式是直接用Spring官網的Spring Initializer來生成項目骨架。

在IDEA中選擇新建工程,然後選擇Spring Assistant後選擇下一步,如下圖所示:

Spring Boot 零基礎上手系列一

保持設置不變,直接下一步,如下圖所示:

Spring Boot 零基礎上手系列一

選擇Web->Spring Web,直接下一步,如下圖所示:

Spring Boot 零基礎上手系列一

保持工程名字不變,直接完成,如下圖所示:

Spring Boot 零基礎上手系列一

生成項目骨架如下:

Spring Boot 零基礎上手系列一

項目POM依賴如下:

Spring Boot 零基礎上手系列一

至此完成了一個最簡項目的搭建。

Spring Boot項目解析

上面的POM文件可以看到一個比較陌生的標籤 ,這個標籤是在配置 Spring Boot 的父級依賴,有了它,後續的諸如spring-boot-starter-web等依賴就可以省去version標籤,具體maven相關支持,可以參考Maven填坑記一和Maven填坑記二。

從項目骨架圖可以看出入口類為DemoApplication,被SpringBoot 的核心註解@SpringBootApplication 標註 ,它實際上是一個組合註解,組合了:@Configuration、@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 註解也可以使用這三個註解代替。

@EnableAutoConfiguration 讓 Spring Boot 根據類路徑中的 jar 包依賴為當前項目進行自動配置,例如,添加 spring-boot-starter-web 依賴,會自動添加 Tomcat 和 Spring MVC 的依賴,那麼 Spring Boot 會對 Tomcat 和 Spring MVC 進行自動配置。

@ComponentScan自動掃描符合條件的組件(@Component和@Repository等)或者bean自定義,並加載到IOC容器中。眾所周知,Spring有兩種配置IOC容器配置類配置方式,Xml配置和JavaConfig的方式,而SpringBoot用的是JavaConfig方式,通過@Configuration和@Bean的組合,就把一個bean定義註冊到Spring的IoC容器。

SpringBoot的配置文件在resources目錄下面,通常用application.properties 或 application.yml作為全局配置文件,本例中為application.properties。yaml 是以數據為中心的語言,在配置數據的時候具有面向對象的特徵。兩種方式就看個人的喜歡做出選擇了。配置文件中可以設置應用啟動的端口號、數據庫連接串等等信息。

以上就是關於SpringBoot的一些基礎概念的簡介,希望可以給大家一個整體的概念,後續細節會一一展開,更多精彩,敬請期待。


分享到:


相關文章: