[TOC]
1 開始之前
在開始學(xué)習(xí)Spring Boot之前,我之前從未接觸過Spring相關(guān)的項(xiàng)目,Java基礎(chǔ)還是幾年前自學(xué)的,現(xiàn)在估計(jì)也忘得差不多了吧,寫Spring Boot自己的學(xué)習(xí)過程前,同時(shí)給一起學(xué)習(xí)的同學(xué)們做個(gè)鼓勵(lì),相信自己能夠?qū)W好,大概了解了下Spring的整個(gè)發(fā)展,還是有很多鋪墊知識(shí)是要知道的,而且就算知道,沒有實(shí)踐經(jīng)驗(yàn)可能還是不能夠很深入的體會(huì)實(shí)際項(xiàng)目中有什么不一樣??傊?,干就是了,然后就是堅(jiān)持走下來,至于為什么要學(xué)習(xí)Spring Boot,這也是我自己的一個(gè)選擇,架構(gòu)之路中一環(huán),武功中的一個(gè)大招,期待學(xué)會(huì)這個(gè)大招。Spring Boot已經(jīng)是Spring的最上層了,從上而下,從新到舊,打通整個(gè)Spring脈絡(luò)。
2 名詞術(shù)語
當(dāng)然學(xué)習(xí)之前,肯定要去調(diào)研一番,了解各種跟Spring相關(guān)的名詞術(shù)語,因?yàn)閷?shí)在太多了,如果不去了解,對(duì)后面的學(xué)習(xí)也會(huì)造成困惑,難以理解,尤其是從未接觸過Java Web,我們所學(xué)習(xí)跟Spring相關(guān)的知識(shí)最終都是如何更好更快的構(gòu)建企業(yè)級(jí)Web應(yīng)用。下面是我學(xué)習(xí)前所了解的一些名詞術(shù)語和該術(shù)語所扮演的功能角色解釋。
名詞術(shù)語 | 釋義 |
---|---|
SQL & NOSQL | NOSQL,Not Only SQL, 非關(guān)系型的數(shù)據(jù)庫統(tǒng)稱,常見如HBase,BigTable,Redis,Cassandra,LevelDB,MongoDB,CouchDB;SQL這里泛指RDBMS,即關(guān)系型數(shù)據(jù)庫管理系統(tǒng),常見如Oracle,DB2,SQL Server,Mysql等 |
Nginx | Nginx是一款輕量級(jí)的Web服務(wù)器、正/反向代理服務(wù)器、負(fù)載均衡,郵件代理服務(wù)器和通用的TCP/UDP代理服務(wù)器,最初由俄羅斯人Igor Sysoev編寫,BSD許可 。由于它的內(nèi)存占用少,啟動(dòng)極快,高并發(fā)能力強(qiáng),在互聯(lián)網(wǎng)項(xiàng)目中廣泛應(yīng)用。 |
Jetty | Jetty 作為一個(gè)獨(dú)立的Servlet 引擎可以獨(dú)立提供Web 服務(wù),但是它也可以與其他Web 應(yīng)用服務(wù)器集成,所以它可以提供基于兩種協(xié)議工作,一個(gè)是HTTP,一個(gè)是AJP 協(xié)議。與Tomcat相比各有特點(diǎn),作為后起之秀,總是帶著新鮮和快速成長的特性 |
Netty | Netty是異步事件驅(qū)動(dòng)(NIO,非阻塞IO)的網(wǎng)絡(luò)應(yīng)用程序框架,用于快速開發(fā)可維護(hù)的高性能協(xié)議服務(wù)器和客戶端。而提供類似功能的有Tomcat和Jetty,Tomcat是基于Http協(xié)議的,而Netty支持各種協(xié)議和定制協(xié)議,包括Http、Websocket、SSL&TLS、Protobuf、RTSP、zlib&gzip、LFS等;Netty更是一種網(wǎng)絡(luò)編程框架,定制化開發(fā)更方便,類似的還有MINA |
Undertow | Undertow是一種用Java編寫的靈活的高性能Web服務(wù)器,可提供基于NIO的阻塞和非阻塞API。同樣的支持Http、Websocket協(xié)議 |
JDBC | Java DataBase Connectivity,java數(shù)據(jù)庫連接,是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。 |
JPA | JPA 伴隨 Java EE 5 發(fā)布,Sun 官方提出的一套 Java 持久化規(guī)范,它為 Java 開發(fā)人員提供了一種對(duì)象/關(guān)聯(lián)映射工具來管理 Java 應(yīng)用中的關(guān)系數(shù)據(jù)。它的出現(xiàn)主要是為了簡(jiǎn)化現(xiàn)有的持久化開發(fā)工作和整合 ORM 技術(shù),結(jié)束現(xiàn)在 Hibernate,TopLink,JDO 等 ORM 框架各自為營的局面。 |
Servlet | 在代碼層面,Servlet其實(shí)就是一個(gè)接口,定義了一套處理網(wǎng)絡(luò)請(qǐng)求的規(guī)范,所有實(shí)現(xiàn)Servlet的類,都需要實(shí)現(xiàn)它所定義的五個(gè)方法;在定義上,它就是一套Java EE規(guī)范,Tomcat & Jetty都是運(yùn)載Servlet的容器 |
MyBatis | MyBatis 是一款優(yōu)秀的持久層框架,MyBatis是iBatis的升級(jí)版,它支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡(jiǎn)單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對(duì)象)為數(shù)據(jù)庫中的記錄。 目前為止最新版本為3.5.3 |
Hibernate | Hibernate是一種ORM框架,全稱為 Object Relative DateBase Mapping,在Java對(duì)象與關(guān)系數(shù)據(jù)庫之間建立某種映射,以實(shí)現(xiàn)直接存取Java對(duì)象,目前為止最新版本為 Hibernate ORM 5.4.7 |
struts2 | Apache Struts是一個(gè)免費(fèi)的開源MVC框架,用于創(chuàng)建優(yōu)雅的現(xiàn)代Java Web應(yīng)用程序。它支持約定勝于配置,可以使用插件體系結(jié)構(gòu)進(jìn)行擴(kuò)展,并且附帶了支持REST,AJAX和JSON的插件。目前最新版本是2.5.20 |
Struts Spring Hibernate(SSH) | SSH 框架是由 struts2、spring、hibernate 三大框架組合起來的一套總框架;struts 的核心思想就是實(shí)現(xiàn) MVC;Spring 的核心思想就是解耦,也就是代碼中不出現(xiàn) new 實(shí)現(xiàn)類的代碼,我們創(chuàng)建了接口不用關(guān)心實(shí)現(xiàn)類是誰;hibernate 的核心思想就是(ORM - 對(duì)象關(guān)系映射) 連接數(shù)據(jù)庫,我們不用在數(shù)據(jù)庫寫創(chuàng)建表的語句 |
Spring | 一個(gè)開放源代碼框架,為JVM上的基于響應(yīng)和基于servlet的應(yīng)用程序提供端到端支持,使用基本的JavaBean代替EJB。是一個(gè)用于創(chuàng)建Java企業(yè)應(yīng)用程序的流行框架。 它已經(jīng)超越了最初的產(chǎn)品范圍,涵蓋了使用Spring框架并圍繞Spring框架構(gòu)建的整個(gè)項(xiàng)目系列。Spring的核心技術(shù)是依賴項(xiàng)注入(DI),事件,資源,i18n,驗(yàn)證,數(shù)據(jù)綁定,類型轉(zhuǎn)換,SpEL,AOP?,F(xiàn)在Spring框架已經(jīng)發(fā)展到了5.0了 |
Spring MVC | Spring MVC是一個(gè)松散耦合的MVC框架,是Spring框架眾多組件中的一個(gè),是一個(gè)使你能夠根據(jù)模型-視圖-控制器設(shè)計(jì)模式實(shí)現(xiàn)Web應(yīng)用程序的組件。而Struts是緊密耦合的。對(duì)于企業(yè)級(jí)應(yīng)用程序,你需要構(gòu)建松散耦合的應(yīng)用程序,因?yàn)樗鼤?huì)使應(yīng)用程序更可重用,更健壯以及更分布式。 |
Spring WebFlux | 是Spring5中的新增模塊,開發(fā)人員可以使用 WebFlux 創(chuàng)建高性能的 Web 應(yīng)用和客戶端,名稱中的 Flux 來源于 Reactor 中的類 Flux,該模塊中包含了對(duì)反應(yīng)式 HTTP、服務(wù)器推送事件和 WebSocket 的客戶端和服務(wù)器端的支持;在服務(wù)器端開發(fā)中,WebFlux 支持兩種不同的編程模型:第一種是 Spring MVC 中使用的基于 Java 注解的方式;第二種是基于 Java 8 的 lambda 表達(dá)式的函數(shù)式編程模型 |
Spring Cloud | Spring Cloud為開發(fā)人員提供了工具,以快速構(gòu)建分布式系統(tǒng)中的某些常見模式(例如,配置管理,服務(wù)注冊(cè)和發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領(lǐng)導(dǎo)選舉,分布式會(huì)話,群集狀態(tài),負(fù)載均衡)。微服務(wù)架構(gòu)集大成者,云計(jì)算最佳業(yè)務(wù)實(shí)踐。Spring Cloud基于Spring Boot實(shí)現(xiàn),使用HTTP的RESTful風(fēng)格API作為調(diào)用方式。它所包含的多個(gè)子項(xiàng)目共同構(gòu)建了微服務(wù)架構(gòu)體系,總體來說,Spring Cloud相比Dubbo內(nèi)容更豐富,而且社區(qū)和生態(tài)相比也較Dubbo好,不過學(xué)習(xí)成本相對(duì)Dubbo要高 |
Dubbo | 阿里巴巴在2011年開源,2013年停止更新,但在2017年9月又重啟維護(hù)并發(fā)布了新版本,Dubbo采用Zookeeper作為注冊(cè)中心,RPC作為服務(wù)調(diào)用方式,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案。它與Spring無縫集成,基于服務(wù)提供方(服務(wù)端)與服務(wù)調(diào)用方(客戶端)角色構(gòu)建簡(jiǎn)單模型,其優(yōu)點(diǎn)是使用方便、學(xué)習(xí)成本低 |
Spring Cloud Data Flow | 將企業(yè)連接到物聯(lián)網(wǎng)—移動(dòng)設(shè)備,傳感器,可穿戴設(shè)備,汽車等。Spring Cloud Data Flow提供了用于創(chuàng)建可組合數(shù)據(jù)微服務(wù)的統(tǒng)一服務(wù),這些微服務(wù)可解決流和基于ETL的數(shù)據(jù)處理模式。 |
Reactive stack & Servlet stack | Spring5 提供了 Servlet 和反應(yīng)式這兩種 Web 技術(shù)棧,在應(yīng)用層面充分向異步和非阻塞并發(fā)靠攏。 |
微服務(wù) | 微服務(wù)是一種分布式系統(tǒng)架構(gòu),是一種思想,是一種設(shè)計(jì)原則,Spring Cloud是開發(fā)微服務(wù)的主流方案,而Spring Boot以Spring Cloud為核心,讓開發(fā)微服務(wù)更快捷方便;開發(fā)微服務(wù)框架還有Netflix OSS(微服務(wù)實(shí)踐鼻祖)、Dubbo、gRPC等 |
Service Mesh(服務(wù)網(wǎng)格) | 服務(wù)間通信的基礎(chǔ)設(shè)施層,可以將它比作是應(yīng)用程序或者說微服務(wù)間的 TCP/IP,負(fù)責(zé)服務(wù)之間的網(wǎng)絡(luò)調(diào)用、限流、熔斷和監(jiān)控,相關(guān)Service Mesh開源項(xiàng)目有Linkerd、Envoy、Istio、Conduit、nginMesh、Kong等,與微服務(wù)相比,微服務(wù)更像是一個(gè)服務(wù)之間的生態(tài),專注于服務(wù)治理等方面,而服務(wù)網(wǎng)格更專注于服務(wù)之間的通信,以及和 DevOps 更好的結(jié)合 |
概念還是有點(diǎn)多的,而是基本指的大的軟件框架的概念,具體到其中每一個(gè)都可以延伸出很多知識(shí),更多可以參見參考鏈接詳細(xì)了解。不過這只是開始,以后可以慢慢了解,并在實(shí)戰(zhàn)中了解每一個(gè)術(shù)語本身所具有的特性。
3 Spring Boot特性與優(yōu)缺點(diǎn)
既然我選擇了從上而下,從新而舊的方式去入手,那么我們對(duì)Spring Boot需要更多的了解,以及Spring Boot在整個(gè)技術(shù)棧中扮演了什么角色?
Spring Boot的口號(hào)是BUILD ANYTHING WITH SPRING BOOT,用Spring Boot構(gòu)建一切!
從官方網(wǎng)站上的構(gòu)件圖可以看出,Spring Boot是一個(gè)大容器,是構(gòu)建所有基于Spring的應(yīng)用程序的入口,Spring Boot旨在通過最少的Spring前期配置使得我們盡快啟動(dòng)并運(yùn)行項(xiàng)目,例如Spring Boot對(duì)比Spring MVC 最大的優(yōu)點(diǎn)就是使用簡(jiǎn)單,約定大于配置,不會(huì)像之前用Spring MVC的時(shí)候,時(shí)不時(shí)被xml 配置文件搞的暈頭轉(zhuǎn)向。從這里看其實(shí)Spring Boot并不是我們構(gòu)建Web應(yīng)用的核心,也可以知道我們可以快速上手Spring Boot,但是我們卻可以通過這個(gè)入口抽絲剝繭去了解它所包含的所有。我們可以列一下Spring Boot的特性:
可以使用Spring Initializr在幾秒鐘內(nèi)快速入門
通過Spring Initializr(https://start.spring.io/),我們可以基于Web UI快速構(gòu)建一個(gè)Spring Boot項(xiàng)目
構(gòu)建輸出任何內(nèi)容:REST API,WebSocket,Web,流,任務(wù)等
總之就是Web相關(guān)都行!
簡(jiǎn)化安全策略集成
對(duì)SQL和NoSQL的非常友好的支持
支持運(yùn)行期內(nèi)嵌容器:Tomcat,Jetty和Undertow
非常輕松地開發(fā)和測(cè)試我們的Web應(yīng)用程序
開發(fā)者生產(chǎn)工具,如LiveReload 和 Auto Restart
自動(dòng)版本依賴管理
避免編寫大量樣板代碼,注釋和XML配置。
可用于生產(chǎn)的功能,例如跟蹤,指標(biāo)和運(yùn)行狀況
可以用你喜歡的開發(fā)IDE,如Spring Tool Suite(STS)、IntelliJ IDEA(IDEA)或NetBeans等
它提供了CLI(命令行界面)工具,可以非常輕松快捷地從命令提示符處開發(fā)和測(cè)試Spring Boot(Java或Groovy)應(yīng)用程序
提供了許多插件
可使用Maven和Gradle等構(gòu)建工具非常輕松地開發(fā)和測(cè)試Spring Boot應(yīng)用程序
可以非常輕松地與嵌入式數(shù)據(jù)庫和內(nèi)存數(shù)據(jù)庫一起使用
有了上面的這些特性,Spring Boot能給我?guī)硎裁春锰幓蛘呦拗颇兀?/p>
對(duì)Spring進(jìn)行了包裝,使得易于理解和開發(fā)Spring應(yīng)用,簡(jiǎn)化配置、測(cè)試、打包和集成第三方工具
快速配置項(xiàng)目,管理依賴版本,快速配置單元測(cè)試,集成測(cè)試等,提高開發(fā)效率和生產(chǎn)率
只能解決類似Spring Framework的問題,而不能解決新的問題,即Spring FrameWork能做的就能做
將現(xiàn)有或舊版Spring Framework項(xiàng)目轉(zhuǎn)換為Spring Boot應(yīng)用程序會(huì)很費(fèi)勁
4 總結(jié)
本篇從零開始詳述了Spring Boot相關(guān)的名詞術(shù)語,從零開始了解Spring Boot,并講述了Spring Boot的特性與優(yōu)缺點(diǎn)。通過對(duì)Spring Boot的詳述,讓我們對(duì)它有了一個(gè)基本的了解,接下來,我們開始進(jìn)入Spring Boot的內(nèi)部和實(shí)戰(zhàn)。
5 更多
更多關(guān)于Spring Boot相關(guān)的學(xué)習(xí),可以持續(xù)關(guān)注我的公眾號(hào)小白AI或者微信小程序小白AI博客。
本文屬于原創(chuàng),轉(zhuǎn)載注明出處,歡迎關(guān)注CSDNfreeape或微信小程序小白AI博客
審核編輯 黃昊宇
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9160瀏覽量
85415 -
spring
+關(guān)注
關(guān)注
0文章
340瀏覽量
14343
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論