摘要:同時(shí),也提供了一個(gè)命令行工具來(lái)執(zhí)行的腳本。應(yīng)用監(jiān)控提供一系列端點(diǎn)可以監(jiān)控服務(wù)及應(yīng)用,能對(duì)應(yīng)用做健康檢測(cè)。這樣,需要對(duì)配置信息非常熟悉,要找起問(wèn)題來(lái)不是很容易。相對(duì)于優(yōu)點(diǎn)來(lái)說(shuō),這些缺點(diǎn)也都不算什么。總之,是值得我們?nèi)魏我粋€(gè)開(kāi)發(fā)者嘗試摸索的。
現(xiàn)在 Spring Boot 非常火,各種技術(shù)文章,各種付費(fèi)教程,多如牛毛,可能還有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天給大家詳細(xì)介紹一下。
Spring Boot 的背景了解 Spring Boot 必須先說(shuō)說(shuō) Spring 框架!
在 Java 后端框架繁榮的今天,Spring 框架無(wú)疑是最最火熱,也是必不可少的開(kāi)源框架,更是穩(wěn)坐 Java 后端框架的龍頭老大。
用過(guò) Spring 框架的都知道 Spring 能流行是因?yàn)樗膬砂牙鳎篒OC 和 AOP,IOC 可以幫助我們管理對(duì)象的依賴(lài)關(guān)系,極大減少對(duì)象的耦合性,而 AOP 的切面編程功能可以更方面的使用動(dòng)態(tài)代理來(lái)實(shí)現(xiàn)各種動(dòng)態(tài)方法功能(如事務(wù)、緩存、日志等)。
而要集成 Spring 框架,必須要用到 XML 配置文件,或者注解式的 Java 代碼配置。無(wú)論是使用 XML 或者代碼配置方式,都需要對(duì)相關(guān)組件的配置有足夠的了解,然后再編寫(xiě)大量冗長(zhǎng)的配置代碼。
然后又有多少開(kāi)發(fā)人員能精通這些配置呢?如果我們只提供一些配置參數(shù)讓框架能自動(dòng)配置這些組件,那是不是 so easy?
基于簡(jiǎn)化 Spring 快速上手為目的,Spring Boot 框架誕生了!
什么是 Spring Boot?Spring Boot是 Spring 開(kāi)源組織下的一個(gè)子項(xiàng)目,也是 Spring 組件一站式解決方案,主要是為了簡(jiǎn)化使用 Spring 框架的難度,簡(jiǎn)省繁重的配置。
Spring Boot提供了各種組件的啟動(dòng)器(starters),開(kāi)發(fā)者只要能配置好對(duì)應(yīng)組件參數(shù),Spring Boot 就會(huì)自動(dòng)配置,讓開(kāi)發(fā)者能快速搭建依賴(lài)于 Spring 組件的 Java 項(xiàng)目。
Spring Boot不但能創(chuàng)建傳統(tǒng)的 war 包應(yīng)用,還能創(chuàng)建獨(dú)立的不依賴(lài)于任何外部容器(如:tomcat)的獨(dú)立應(yīng)用,使用 java -jar 命令就能啟動(dòng)。同時(shí),Spring Boot也提供了一個(gè)命令行工具來(lái)執(zhí)行 Spring 的腳本。
Spring Boot 的官方網(wǎng)站:
https://projects.spring.io/sp...
Spring Boot 的源碼:
https://github.com/spring-pro...Spring Boot 的設(shè)計(jì)目標(biāo)
如果你不清楚 Spring 是干嘛用的,那再來(lái)看看設(shè)計(jì)它的目標(biāo)和初衷是什么!
為 Spring 應(yīng)用開(kāi)發(fā)提供一個(gè)更快、更容易上手的入門(mén)體驗(yàn);
提供一系列在大型項(xiàng)目中經(jīng)常用到的公共的非功能性特性,如:內(nèi)嵌入服務(wù)器、安全、度量指標(biāo)、健康檢測(cè)、外部化配置;
零代碼配置生成及零 XML 配置;
Spring Boot 為什么能這么火?Spring Boot 為什么能這么火?是因?yàn)樗幸韵聨讉€(gè)特色。
1、獨(dú)立運(yùn)行
Spring Boot內(nèi)嵌了各種 Servlet 容器,Tomcat、Jetty等,現(xiàn)在不再需要打成 war 包部署到容器中,Spring Boot 只要打成一個(gè)可執(zhí)行的jar包就能獨(dú)立運(yùn)行,所有的依賴(lài)包都在一個(gè) jar 包內(nèi)。
2、簡(jiǎn)化 Maven 配置
如上圖所示,現(xiàn)在只要依賴(lài) spring-boot-starter-web 啟動(dòng)器包,它包含所有 web 開(kāi)發(fā)所有的依賴(lài),就能擁有 Spring Web 的能力,極大簡(jiǎn)少了 maven 對(duì)依賴(lài)的配置。
使用 Maven 命令:mvn dependency:tree 也可以看到完整的依賴(lài)樹(shù):
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.0.1.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.1.RELEASE:compile [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile [INFO] | | | | - ch.qos.logback:logback-core:jar:1.2.3:compile [INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile [INFO] | | | | - org.apache.logging.log4j:log4j-api:jar:2.10.0:compile [INFO] | | | - org.slf4j:jul-to-slf4j:jar:1.7.25:compile [INFO] | | +- javax.annotation:javax.annotation-api:jar:1.3.2:compile [INFO] | | - org.yaml:snakeyaml:jar:1.19:runtime [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile [INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile [INFO] | | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile [INFO] | | | - com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile [INFO] | | - com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.0.1.RELEASE:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.29:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.29:compile [INFO] | | - org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.29:compile [INFO] | +- org.hibernate.validator:hibernate-validator:jar:6.0.9.Final:compile [INFO] | | +- javax.validation:validation-api:jar:2.0.1.Final:compile [INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile [INFO] | | - com.fasterxml:classmate:jar:1.3.4:compile [INFO] | +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile [INFO] | | - org.springframework:spring-beans:jar:5.0.5.RELEASE:compile [INFO] | - org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile [INFO] | +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile [INFO] | +- org.springframework:spring-context:jar:5.0.5.RELEASE:compile [INFO] | - org.springframework:spring-expression:jar:5.0.5.RELEASE:compile
3、自動(dòng)配置
Spring Boot能根據(jù)當(dāng)前類(lèi)路徑下的類(lèi)或者 jar 包里面來(lái)的類(lèi)來(lái)自動(dòng)配置 Spring Bean,如添加一個(gè) spring-boot-starter-web 啟動(dòng)器就能擁有 web 的功能,無(wú)需其他配置。也可以在配置文件中添加相關(guān)配置來(lái)自定義裝配,這個(gè)后面的課程會(huì)講到,請(qǐng)關(guān)注后續(xù)內(nèi)容。
4、無(wú)代碼生成和XML配置
Spring Boot配置過(guò)程中無(wú)代碼生成,也無(wú)需XML配置文件就能完成所有配置工作,這一切都是借助于條件注解完成的,這也是 Spring 4+ 的核心功能之一。
5、應(yīng)用監(jiān)控
Spring Boot提供一系列端點(diǎn)可以監(jiān)控服務(wù)及應(yīng)用,能對(duì)Spring 應(yīng)用做健康檢測(cè)。
Spring Boot 的缺點(diǎn)說(shuō)了這么多 Spring Boot 的優(yōu)點(diǎn)和特色,雖然上手很容易,但也不是沒(méi)有缺點(diǎn)。任何框架都有其優(yōu)缺點(diǎn),Spring Boot 也不例外,我大概可以總結(jié)有以下幾個(gè)缺點(diǎn)。
1、需要非常了解 Spring Boot 的核心技術(shù)原理,不然一旦遇到問(wèn)題就很棘手。因?yàn)槭裁礀|西都集成了,自動(dòng)配置化。這樣,需要對(duì)配置信息非常熟悉,要找起問(wèn)題來(lái)不是很容易。
2、從原始 Spring 項(xiàng)目很難平滑遷移至 Spring Boot 框架上來(lái),因?yàn)橛行v史老舊的 XML 配置無(wú)法通過(guò) Java 來(lái)配置,還需要額外的 XML 文件就不是很完美。再比如,之前是獨(dú)立的 Tomcat,什么參數(shù)都在線上配置好了,你改為內(nèi)置的 Tomcat 就會(huì)遇到很多問(wèn)題。
相對(duì)于優(yōu)點(diǎn)來(lái)說(shuō),這些缺點(diǎn)也都不算什么。總之,Spring Boot 是值得我們?nèi)魏我粋€(gè) Java 開(kāi)發(fā)者嘗試摸索的。
更多干貨推薦
1.史上最強(qiáng) Java 中高級(jí)面試題整理
2.史上最強(qiáng) Spring Boot & Cloud 教程整理
3.史上最強(qiáng)架構(gòu)設(shè)計(jì)分布式技術(shù)干貨整理
更多請(qǐng)掃描下方的二維碼關(guān)注我們的微信公眾號(hào)Java技術(shù)棧(id: javastack),Java干貨每日推送!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/71695.html
摘要:開(kāi)公眾號(hào)差不多兩年了,有不少原創(chuàng)教程,當(dāng)原創(chuàng)越來(lái)越多時(shí),大家搜索起來(lái)就很不方便,因此做了一個(gè)索引幫助大家快速找到需要的文章系列處理登錄請(qǐng)求前后端分離一使用完美處理權(quán)限問(wèn)題前后端分離二使用完美處理權(quán)限問(wèn)題前后端分離三中密碼加鹽與中異常統(tǒng)一處理 開(kāi)公眾號(hào)差不多兩年了,有不少原創(chuàng)教程,當(dāng)原創(chuàng)越來(lái)越多時(shí),大家搜索起來(lái)就很不方便,因此做了一個(gè)索引幫助大家快速找到需要的文章! Spring Boo...
摘要:最近棧長(zhǎng)看到一個(gè)框架,官方號(hào)稱(chēng)可以比快倍,居然這么牛逼,有這么神奇嗎今天帶大家來(lái)認(rèn)識(shí)一下。官網(wǎng)簡(jiǎn)介很簡(jiǎn)單,翻譯過(guò)來(lái)就是一個(gè)快速輕量級(jí)和更高效的微服務(wù)框架。 最近棧長(zhǎng)看到一個(gè)框架,官方號(hào)稱(chēng)可以比 Spring Boot 快 44 倍,居然這么牛逼,有這么神奇嗎?今天帶大家來(lái)認(rèn)識(shí)一下。 這個(gè)框架名叫:light-4j。 官網(wǎng)簡(jiǎn)介:A fast, lightweight and more p...
摘要:在逐步開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)自己需求,用戶(hù)使用,頁(yè)面樣式,做得都不是很好。希望很和牛逼的人合作,一齊完善這個(gè)項(xiàng)目,能讓它變成可以使用的產(chǎn)品。自己也可以在此不斷學(xué)習(xí),不斷累計(jì)新的知識(shí),慢慢變強(qiáng)起來(lái)。 showImg(https://segmentfault.com/img/bVboKz5);#### 這一個(gè)什么項(xiàng)目 ##### 使用技術(shù) Spring MVC Spring Security ...
摘要:介紹這里有官方提供的演示項(xiàng)目和介紹本筆記也是通過(guò)官方提供的演示項(xiàng)目來(lái)進(jìn)行講解我們可以看到官方的項(xiàng)目中有三個(gè)模塊和其中是演示如何使用自動(dòng)配置是自動(dòng)配置時(shí)的一些邏輯處理比較簡(jiǎn)單其中只有一些項(xiàng)目的依賴(lài)比如我們使用的 介紹 這里有官方提供的 演示項(xiàng)目 和 介紹. 本筆記也是通過(guò)官方提供的演示項(xiàng)目來(lái)進(jìn)行講解. 我們可以看到官方的項(xiàng)目中有三個(gè)模塊, hornetq-sample-app horne...
閱讀 3591·2021-09-22 10:52
閱讀 1601·2021-09-09 09:34
閱讀 2005·2021-09-09 09:33
閱讀 769·2019-08-30 15:54
閱讀 2687·2019-08-29 11:15
閱讀 728·2019-08-26 13:37
閱讀 1680·2019-08-26 12:11
閱讀 2988·2019-08-26 12:00