摘要:同時,也提供了一個命令行工具來執行的腳本。應用監控提供一系列端點可以監控服務及應用,能對應用做健康檢測。這樣,需要對配置信息非常熟悉,要找起問題來不是很容易。相對于優點來說,這些缺點也都不算什么。總之,是值得我們任何一個開發者嘗試摸索的。
現在 Spring Boot 非常火,各種技術文章,各種付費教程,多如牛毛,可能還有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天給大家詳細介紹一下。
Spring Boot 的背景了解 Spring Boot 必須先說說 Spring 框架!
在 Java 后端框架繁榮的今天,Spring 框架無疑是最最火熱,也是必不可少的開源框架,更是穩坐 Java 后端框架的龍頭老大。
用過 Spring 框架的都知道 Spring 能流行是因為它的兩把利器:IOC 和 AOP,IOC 可以幫助我們管理對象的依賴關系,極大減少對象的耦合性,而 AOP 的切面編程功能可以更方面的使用動態代理來實現各種動態方法功能(如事務、緩存、日志等)。
而要集成 Spring 框架,必須要用到 XML 配置文件,或者注解式的 Java 代碼配置。無論是使用 XML 或者代碼配置方式,都需要對相關組件的配置有足夠的了解,然后再編寫大量冗長的配置代碼。
然后又有多少開發人員能精通這些配置呢?如果我們只提供一些配置參數讓框架能自動配置這些組件,那是不是 so easy?
基于簡化 Spring 快速上手為目的,Spring Boot 框架誕生了!
什么是 Spring Boot?Spring Boot是 Spring 開源組織下的一個子項目,也是 Spring 組件一站式解決方案,主要是為了簡化使用 Spring 框架的難度,簡省繁重的配置。
Spring Boot提供了各種組件的啟動器(starters),開發者只要能配置好對應組件參數,Spring Boot 就會自動配置,讓開發者能快速搭建依賴于 Spring 組件的 Java 項目。
Spring Boot不但能創建傳統的 war 包應用,還能創建獨立的不依賴于任何外部容器(如:tomcat)的獨立應用,使用 java -jar 命令就能啟動。同時,Spring Boot也提供了一個命令行工具來執行 Spring 的腳本。
Spring Boot 的官方網站:
https://projects.spring.io/sp...
Spring Boot 的源碼:
https://github.com/spring-pro...Spring Boot 的設計目標
如果你不清楚 Spring 是干嘛用的,那再來看看設計它的目標和初衷是什么!
為 Spring 應用開發提供一個更快、更容易上手的入門體驗;
提供一系列在大型項目中經常用到的公共的非功能性特性,如:內嵌入服務器、安全、度量指標、健康檢測、外部化配置;
零代碼配置生成及零 XML 配置;
Spring Boot 為什么能這么火?Spring Boot 為什么能這么火?是因為它有以下幾個特色。
1、獨立運行
Spring Boot內嵌了各種 Servlet 容器,Tomcat、Jetty等,現在不再需要打成 war 包部署到容器中,Spring Boot 只要打成一個可執行的jar包就能獨立運行,所有的依賴包都在一個 jar 包內。
2、簡化 Maven 配置
如上圖所示,現在只要依賴 spring-boot-starter-web 啟動器包,它包含所有 web 開發所有的依賴,就能擁有 Spring Web 的能力,極大簡少了 maven 對依賴的配置。
使用 Maven 命令:mvn dependency:tree 也可以看到完整的依賴樹:
[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、自動配置
Spring Boot能根據當前類路徑下的類或者 jar 包里面來的類來自動配置 Spring Bean,如添加一個 spring-boot-starter-web 啟動器就能擁有 web 的功能,無需其他配置。也可以在配置文件中添加相關配置來自定義裝配,這個后面的課程會講到,請關注后續內容。
4、無代碼生成和XML配置
Spring Boot配置過程中無代碼生成,也無需XML配置文件就能完成所有配置工作,這一切都是借助于條件注解完成的,這也是 Spring 4+ 的核心功能之一。
5、應用監控
Spring Boot提供一系列端點可以監控服務及應用,能對Spring 應用做健康檢測。
Spring Boot 的缺點說了這么多 Spring Boot 的優點和特色,雖然上手很容易,但也不是沒有缺點。任何框架都有其優缺點,Spring Boot 也不例外,我大概可以總結有以下幾個缺點。
1、需要非常了解 Spring Boot 的核心技術原理,不然一旦遇到問題就很棘手。因為什么東西都集成了,自動配置化。這樣,需要對配置信息非常熟悉,要找起問題來不是很容易。
2、從原始 Spring 項目很難平滑遷移至 Spring Boot 框架上來,因為有些歷史老舊的 XML 配置無法通過 Java 來配置,還需要額外的 XML 文件就不是很完美。再比如,之前是獨立的 Tomcat,什么參數都在線上配置好了,你改為內置的 Tomcat 就會遇到很多問題。
相對于優點來說,這些缺點也都不算什么。總之,Spring Boot 是值得我們任何一個 Java 開發者嘗試摸索的。
更多干貨推薦
1.史上最強 Java 中高級面試題整理
2.史上最強 Spring Boot & Cloud 教程整理
3.史上最強架構設計分布式技術干貨整理
更多請掃描下方的二維碼關注我們的微信公眾號Java技術棧(id: javastack),Java干貨每日推送!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71695.html
摘要:開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統一處理 開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...
摘要:最近棧長看到一個框架,官方號稱可以比快倍,居然這么牛逼,有這么神奇嗎今天帶大家來認識一下。官網簡介很簡單,翻譯過來就是一個快速輕量級和更高效的微服務框架。 最近棧長看到一個框架,官方號稱可以比 Spring Boot 快 44 倍,居然這么牛逼,有這么神奇嗎?今天帶大家來認識一下。 這個框架名叫:light-4j。 官網簡介:A fast, lightweight and more p...
摘要:在逐步開發過程中,發現自己需求,用戶使用,頁面樣式,做得都不是很好。希望很和牛逼的人合作,一齊完善這個項目,能讓它變成可以使用的產品。自己也可以在此不斷學習,不斷累計新的知識,慢慢變強起來。 showImg(https://segmentfault.com/img/bVboKz5);#### 這一個什么項目 ##### 使用技術 Spring MVC Spring Security ...
摘要:介紹這里有官方提供的演示項目和介紹本筆記也是通過官方提供的演示項目來進行講解我們可以看到官方的項目中有三個模塊和其中是演示如何使用自動配置是自動配置時的一些邏輯處理比較簡單其中只有一些項目的依賴比如我們使用的 介紹 這里有官方提供的 演示項目 和 介紹. 本筆記也是通過官方提供的演示項目來進行講解. 我們可以看到官方的項目中有三個模塊, hornetq-sample-app horne...
閱讀 3560·2021-09-22 10:52
閱讀 1587·2021-09-09 09:34
閱讀 1989·2021-09-09 09:33
閱讀 757·2019-08-30 15:54
閱讀 2595·2019-08-29 11:15
閱讀 712·2019-08-26 13:37
閱讀 1666·2019-08-26 12:11
閱讀 2974·2019-08-26 12:00