我們?yōu)槭裁匆獙W(xué)習(xí)Spring Boot?

Spring Boot是什么我們知道,從 2002 年開(kāi)始,Spring 一直在飛速的發(fā)展,如今已經(jīng)成為了在Java EE(Java Enterprise Edition)開(kāi)發(fā)中真正意義上的標(biāo)準(zhǔn),但是隨著技術(shù)的發(fā)展,Java EE使用 Spring 逐漸變得笨重起來(lái),大量的 XML 文件存在于項(xiàng)目之中。繁瑣的配置,整合第三方框架的配置問(wèn)題,導(dǎo)致了開(kāi)發(fā)和部署效率的降低。

2012 年 10 月,Mike Youngstrom 在 Spring jira 中創(chuàng)建了一個(gè)功能請(qǐng)求,要求在 Spring 框架中支持無(wú)容器 Web 應(yīng)用程序體系結(jié)構(gòu)。他談到了在主容器引導(dǎo) spring 容器內(nèi)配置 Web 容器服務(wù)。

這是 jira 請(qǐng)求的摘錄:我認(rèn)為 Spring 的 Web 應(yīng)用體系結(jié)構(gòu)可以大大簡(jiǎn)化,如果它提供了從上到下利用 Spring 組件和配置模型的工具和參考體系結(jié)構(gòu)。在簡(jiǎn)單的 main()方法引導(dǎo)的 Spring 容器內(nèi)嵌入和統(tǒng)一這些常用Web 容器服務(wù)的配置。 這一要求促使了 2013 年初開(kāi)始的 Spring Boot 項(xiàng)目的研發(fā),到今天,Spring Boot 的版本已經(jīng)到了 2.0.3 RELEASE。

Spring Boot 并不是用來(lái)替代 Spring 的解決方案,而是和 Spring 框架緊密結(jié)合用于提升 Spring 開(kāi)發(fā)者體驗(yàn)的工具。同時(shí)它集成了大量常用的第三方庫(kù)配置,Spring Boot應(yīng)用中這些第三方庫(kù)幾乎可以是零配置的開(kāi)箱即用(out-of-the-box),大部分的 Spring Boot 應(yīng)用都只需要非常少量的配置代碼(基于 Java 的配置),開(kāi)發(fā)者能夠更加專注于業(yè)務(wù)邏輯。

?為什么學(xué)習(xí)Spring Boot從Spring

官方來(lái)看我們打開(kāi) Spring 的官方網(wǎng)站,可以看到:官方對(duì) Spring Boot 的定位:Build Anything, Build任何東西。Spring Boot旨在盡可能快地啟動(dòng)和運(yùn)行,并且只需最少的 Spring 前期配置。 同時(shí)我們也來(lái)看一下官方對(duì)后面兩個(gè)的定位: SpringCloud:Coordinate Anything,協(xié)調(diào)任何事情; SpringCloud Data Flow:Connect everything,連接任何東西。仔細(xì)品味一下,Spring 官網(wǎng)對(duì) Spring Boot、SpringCloud 和 SpringCloud Data Flow三者定位的措辭非常有味道,同時(shí)也可以看出,Spring 官方對(duì)這三個(gè)技術(shù)非常重視,是現(xiàn)在以及今后學(xué)習(xí)的重點(diǎn)(SpringCloud 相關(guān)達(dá)人課課程屆時(shí)也會(huì)上線)。

從Spring Boot的優(yōu)點(diǎn)來(lái)看Spring Boot 有哪些優(yōu)點(diǎn)?主要給我們解決了哪些問(wèn)題呢?我們以下圖來(lái)說(shuō)明:Spring Boot的優(yōu)點(diǎn)良好的基因Spring Boot 是伴隨著 Spring 4.0 誕生的,從字面理解,Boot是引導(dǎo)的意思,因此 Spring Boot 旨在幫助開(kāi)發(fā)者快速搭建 Spring 框架。Spring Boot 繼承了原有 Spring 框架的優(yōu)秀基因,使 Spring 在使用中更加方便快捷。Spring Boot與Spring簡(jiǎn)化編碼舉個(gè)例子,比如我們要?jiǎng)?chuàng)建一個(gè) web 項(xiàng)目,使用 Spring 的朋友都知道,在使用 Spring 的時(shí)候,需要在 pom 文件中添加多個(gè)依賴,而 Spring Boot 則會(huì)幫助開(kāi)發(fā)著快速啟動(dòng)一個(gè) web 容器,在 Spring Boot 中,我們只需要在 pom 文件中添加如下一個(gè) starter-web 依賴即可。

學(xué)習(xí)群? 64弍46衣3凌9,資料群 69似64陸0吧3

org.springframework.bootspring-boot-starter-web我們點(diǎn)擊進(jìn)入該依賴后可以看到,Spring Boot 這個(gè) starter-web 已經(jīng)包含了多個(gè)依賴,包括之前在 Spring 工程中需要導(dǎo)入的依賴,我們看一下其中的一部分,如下:org.springframeworkspring-eb5.0.7.RELEASEcompileorg.springframeworkspring-webmvc5.0.7.RELEASEcompile由此可以看出,Spring Boot 大大簡(jiǎn)化了我們的編碼,我們不用一個(gè)個(gè)導(dǎo)入依賴,直接一個(gè)依賴即可。簡(jiǎn)化配置Spring 雖然使Java EE輕量級(jí)框架,但由于其繁瑣的配置,一度被人認(rèn)為是“配置地獄”。各種XML、Annotation配置會(huì)讓人眼花繚亂,而且配置多的話,如果出錯(cuò)了也很難找出原因。Spring Boot更多的是采用 Java Config 的方式,對(duì) Spring 進(jìn)行配置。

舉個(gè)例子:我新建一個(gè)類,但是我不用 @Service注解,也就是說(shuō),它是個(gè)普通的類,那么我們?nèi)绾问顾渤蔀橐粋€(gè) Bean 讓 Spring 去管理呢?只需要@Configuration 和@Bean兩個(gè)注解即可,如下:

public class TestService

{ public String sayHello ()

{ return "Hello Spring Boot!"; }}

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configurationpublic class JavaConfig {

?? @Bean public TestService getTestService()

?{ return new TestService(); }}

@Configuration表示該類是個(gè)配置類,@Bean表示該方法返回一個(gè) Bean。這樣就把TestService作為 Bean 讓 Spring 去管理了,在其他地方,我們?nèi)绻枰褂迷?Bean,和原來(lái)一樣,直接使用@Resource注解注入進(jìn)來(lái)即可使用,非常方便。@Resourceprivate TestService testService;另外,部署配置方面,原來(lái) Spring 有多個(gè) xml 和 properties配置,在 Spring Boot 中只需要個(gè) application.yml即可。

簡(jiǎn)化部署在使用 Spring 時(shí),項(xiàng)目部署時(shí)需要我們?cè)诜?wù)器上部署 tomcat,然后把項(xiàng)目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,我們不需要在服務(wù)器上去部署 tomcat,因?yàn)?Spring Boot 內(nèi)嵌了 tomcat,我們只需要將項(xiàng)目打成 jar 包,使用 java -jar xxx.jar一鍵式啟動(dòng)項(xiàng)目。另外,也降低對(duì)運(yùn)行環(huán)境的基本要求,環(huán)境變量中有JDK即可。簡(jiǎn)化監(jiān)控我們可以引入 spring-boot-start-actuator 依賴,直接使用 REST 方式來(lái)獲取進(jìn)程的運(yùn)行期性能參數(shù),從而達(dá)到監(jiān)控的目的,比較方便。

但是 Spring Boot 只是個(gè)微框架,沒(méi)有提供相應(yīng)的服務(wù)發(fā)現(xiàn)與注冊(cè)的配套功能,沒(méi)有外圍監(jiān)控集成方案,沒(méi)有外圍安全管理方案,所以在微服務(wù)架構(gòu)中,還需要 Spring Cloud 來(lái)配合一起使用。從未來(lái)發(fā)展的趨勢(shì)來(lái)看微服務(wù)是未來(lái)發(fā)展的趨勢(shì),項(xiàng)目會(huì)從傳統(tǒng)架構(gòu)慢慢轉(zhuǎn)向微服務(wù)架構(gòu),因?yàn)槲⒎?wù)可以使不同的團(tuán)隊(duì)專注于更小范圍的工作職責(zé)、使用獨(dú)立的技術(shù)、更安全更頻繁地部署。而 繼承了 Spring 的優(yōu)良特性,與 Spring 一脈相承,而且 支持各種REST API 的實(shí)現(xiàn)方式。Spring Boot 也是官方大力推薦的技術(shù),可以看出,Spring Boot 是未來(lái)發(fā)展的一個(gè)大趨勢(shì)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評(píng)論 6 342
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 1.1 spring IoC容器和beans的簡(jiǎn)介 Spring 框架的最核心基礎(chǔ)的功能是IoC(控制反轉(zhuǎn))容器,...
    simoscode閱讀 6,844評(píng)論 2 22
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,931評(píng)論 1 92
  • 入門 介紹 Spring Boot Spring Boot 使您可以輕松地創(chuàng)建獨(dú)立的、生產(chǎn)級(jí)的基于 Spring ...
    Hsinwong閱讀 17,087評(píng)論 2 89

友情鏈接更多精彩內(nèi)容