本文屬於原創,轉載註明出處,歡迎關注微信小程序小白AI博客
微信公衆號小白AI
或者網站 xiaobaiai.nethtml
[TOC]java
在開始學習Spring Boot
以前,我以前從未接觸過Spring
相關的項目,Java
基礎仍是幾年前自學的,如今估計也忘得差很少了吧,寫Spring Boot
本身的學習過程前,同時給一塊兒學習的同窗們作個鼓勵,相信本身可以學好,大概瞭解了下Spring
的整個發展,仍是有不少鋪墊知識是要知道的,並且就算知道,沒有實踐經驗可能仍是不可以很深刻的體會實際項目中有什麼不同。總之,幹就是了,而後就是堅持走下來,至於爲何要學習Spring Boot
,這也是我本身的一個選擇,架構之路中一環,武功中的一個大招,期待學會這個大招。Spring Boot
已是Spring
的最上層了,從上而下,重新到舊,打通整個Spring
脈絡。react
固然學習以前,確定要去調研一番,瞭解各類跟Spring
相關的名詞術語,由於實在太多了,若是不去了解,對後面的學習也會形成困惑,難以理解,尤爲是從未接觸過Java Web
,咱們所學習跟Spring相關的知識最終都是如何更好更快的構建企業級Web應用。下面是我學習前所瞭解的一些名詞術語和該術語所扮演的功能角色解釋。nginx
名詞術語 | 釋義 |
---|---|
SQL & NOSQL | NOSQL,Not Only SQL, 非關係型的數據庫統稱,常見如HBase,BigTable,Redis,Cassandra,LevelDB,MongoDB,CouchDB;SQL這裏泛指RDBMS,即關係型數據庫管理系統,常見如Oracle,DB2,SQL Server,Mysql等 |
Nginx | Nginx是一款輕量級的Web服務器、正/反向代理服務器、負載均衡,郵件代理服務器和通用的TCP/UDP代理服務器,最初由俄羅斯人Igor Sysoev編寫,BSD許可 。因爲它的內存佔用少,啓動極快,高併發能力強,在互聯網項目中普遍應用。 |
Jetty | Jetty 做爲一個獨立的Servlet 引擎能夠獨立提供Web 服務,可是它也能夠與其餘Web 應用服務器集成,因此它能夠提供基於兩種協議工做,一個是HTTP,一個是AJP 協議。與Tomcat相比各有特色,做爲後起之秀,老是帶着新鮮和快速成長的特性 |
Netty | Netty是異步事件驅動(NIO,非阻塞IO)的網絡應用程序框架,用於快速開發可維護的高性能協議服務器和客戶端。而提供相似功能的有Tomcat和Jetty,Tomcat是基於Http協議的,而Netty支持各類協議和定製協議,包括Http、Websocket、SSL&TLS、Protobuf、RTSP、zlib&gzip、LFS等;Netty更是一種網絡編程框架,定製化開發更方便,相似的還有MINA |
Undertow | Undertow是一種用Java編寫的靈活的高性能Web服務器,可提供基於NIO的阻塞和非阻塞API。一樣的支持Http、Websocket協議 |
JDBC | Java DataBase Connectivity,java數據庫鏈接,是一種用於執行SQL語句的Java API,能夠爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。 |
JPA | JPA 伴隨 Java EE 5 發佈,Sun 官方提出的一套 Java 持久化規範,它爲 Java 開發人員提供了一種對象/關聯映射工具來管理 Java 應用中的關係數據。它的出現主要是爲了簡化現有的持久化開發工做和整合 ORM 技術,結束如今 Hibernate,TopLink,JDO 等 ORM 框架各自爲營的局面。 |
Servlet | 在代碼層面,Servlet其實就是一個接口,定義了一套處理網絡請求的規範,全部實現Servlet的類,都須要實現它所定義的五個方法;在定義上,它就是一套Java EE規範,Tomcat & Jetty都是運載Servlet的容器 |
MyBatis | MyBatis 是一款優秀的持久層框架,MyBatis是iBatis的升級版,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可使用簡單的 XML 或註解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。 目前爲止最新版本爲3.5.3 |
Hibernate | Hibernate是一種ORM框架,全稱爲 Object Relative DateBase Mapping,在Java對象與關係數據庫之間創建某種映射,以實現直接存取Java對象,目前爲止最新版本爲Hibernate ORM 5.4.7 |
struts2 | Apache Struts是一個免費的開源MVC框架,用於建立優雅的現代Java Web應用程序。它支持約定勝於配置,可使用插件體系結構進行擴展,而且附帶了支持REST,AJAX和JSON的插件。目前最新版本是2.5.20 |
Struts Spring Hibernate(SSH) | SSH 框架是由 struts二、spring、hibernate 三大框架組合起來的一套總框架;struts 的核心思想就是實現 MVC;Spring 的核心思想就是解耦,也就是代碼中不出現 new 實現類的代碼,咱們建立了接口不用關心實現類是誰;hibernate 的核心思想就是(ORM - 對象關係映射) 鏈接數據庫,咱們不用在數據庫寫建立表的語句 |
Spring | 一個開放源代碼框架,爲JVM上的基於響應和基於servlet的應用程序提供端到端支持,使用基本的JavaBean代替EJB。是一個用於建立Java企業應用程序的流行框架。它已經超越了最初的產品範圍,涵蓋了使用Spring框架並圍繞Spring框架構建的整個項目系列。Spring的核心技術是依賴項注入(DI),事件,資源,i18n,驗證,數據綁定,類型轉換,SpEL,AOP。如今Spring框架已經發展到了5.0了 |
Spring MVC | Spring MVC是一個鬆散耦合的MVC框架,是Spring框架衆多組件中的一個,是一個使你可以根據模型-視圖-控制器設計模式實現Web應用程序的組件。而Struts是緊密耦合的。對於企業級應用程序,你須要構建鬆散耦合的應用程序,由於它會使應用程序更可重用,更健壯以及更分佈式。 |
Spring WebFlux | 是Spring5中的新增模塊,開發人員可使用 WebFlux 建立高性能的 Web 應用和客戶端,名稱中的 Flux 來源於 Reactor 中的類 Flux,該模塊中包含了對反應式 HTTP、服務器推送事件和 WebSocket 的客戶端和服務器端的支持;在服務器端開發中,WebFlux 支持兩種不一樣的編程模型:第一種是 Spring MVC 中使用的基於 Java 註解的方式;第二種是基於 Java 8 的 lambda 表達式的函數式編程模型 |
Spring Cloud | Spring Cloud爲開發人員提供了工具,以快速構建分佈式系統中的某些常見模式(例如,配置管理,服務註冊和發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分佈式會話,羣集狀態,負載均衡)。微服務架構集大成者,雲計算最佳業務實踐。Spring Cloud基於Spring Boot實現,使用HTTP的RESTful風格API做爲調用方式。它所包含的多個子項目共同構建了微服務架構體系,整體來講,Spring Cloud相比Dubbo內容更豐富,並且社區和生態相比也較Dubbo好,不過學習成本相對Dubbo要高 |
Dubbo | 阿里巴巴在2011年開源,2013年中止更新,但在2017年9月又重啓維護併發布了新版本,Dubbo採用Zookeeper做爲註冊中心,RPC做爲服務調用方式,致力於提供高性能和透明化的RPC遠程服務調用方案。它與Spring無縫集成,基於服務提供方(服務端)與服務調用方(客戶端)角色構建簡單模型,其優勢是使用方便、學習成本低 |
Spring Cloud Data Flow | 將企業鏈接到物聯網—移動設備,傳感器,可穿戴設備,汽車等。Spring Cloud Data Flow提供了用於建立可組合數據微服務的統一服務,這些微服務可解決流和基於ETL的數據處理模式。 |
Reactive stack & Servlet stack | Spring5 提供了 Servlet 和反應式這兩種 Web 技術棧,在應用層面充分向異步和非阻塞併發靠攏。 |
微服務 | 微服務是一種分佈式系統架構,是一種思想,是一種設計原則,Spring Cloud是開發微服務的主流方案,而Spring Boot以Spring Cloud爲核心,讓開發微服務更快捷方便;開發微服務框架還有Netflix OSS(微服務實踐鼻祖)、Dubbo、gRPC等 |
Service Mesh(服務網格) | 服務間通訊的基礎設施層,能夠將它比做是應用程序或者說微服務間的 TCP/IP,負責服務之間的網絡調用、限流、熔斷和監控,相關Service Mesh開源項目有Linkerd、Envoy、Istio、Conduit、nginMesh、Kong等,與微服務相比,微服務更像是一個服務之間的生態,專一於服務治理等方面,而服務網格更專一於服務之間的通訊,以及和 DevOps 更好的結合 |
概念仍是有點多的,而是基本指的大的軟件框架的概念,具體到其中每個均可以延伸出不少知識,更多能夠參見參考連接詳細瞭解。不過這只是開始,之後能夠慢慢了解,並在實戰中瞭解每個術語自己所具備的特性。web
既然我選擇了從上而下,重新而舊的方式去入手,那麼咱們對Spring Boot
須要更多的瞭解,以及Spring Boot
在整個技術棧中扮演了什麼角色?spring
Spring Boot
的口號是BUILD ANYTHING WITH SPRING BOOT
,用Spring Boot
構建一切!sql
從官方網站上的構件圖能夠看出,Spring Boot
是一個大容器,是構建全部基於Spring
的應用程序的入口,Spring Boot
旨在經過最少的Spring前期配置
使得咱們儘快啓動並運行項目,例如Spring Boot
對比Spring MVC
最大的優勢就是使用簡單,約定大於配置,不會像以前用Spring MVC
的時候,時不時被xml
配置文件搞的暈頭轉向。從這裏看其實Spring Boot
並非咱們構建Web應用的核心,也能夠知道咱們能夠快速上手Spring Boot
,可是咱們卻能夠經過這個入口抽絲剝繭去了解它所包含的全部。咱們能夠列一下Spring Boot
的特性:數據庫
Spring Initializr
在幾秒鐘內快速入門
Spring Initializr
(https://start.spring.io/),咱們能夠基於Web UI快速構建一個Spring Boot項目 Spring Boot
(Java或Groovy)應用程序 有了上面的這些特性,Spring Boot
能給我帶來什麼好處或者限制呢:apache
包裝
,使得易於理解和開發Spring應用,簡化配置、測試、打包和集成第三方工具 Spring Framework
的問題,而不能解決新的問題,即Spring FrameWork
能作的就能作 Spring Framework
項目轉換爲Spring Boot
應用程序會很費勁 本篇從零開始詳述了Spring Boot
相關的名詞術語,從零開始瞭解Spring Boot
,並講述了Spring Boot
的特性與優缺點。經過對Spring Boot
的詳述,讓咱們對它有了一個基本的瞭解,接下來,咱們開始進入Spring Boot
的內部和實戰。編程
更多關於Spring Boot
相關的學習,能夠持續關注個人公衆號小白AI
或者微信小程序小白AI博客
或PC端網站xiaobaiai.net。
小白AI博客
微信公衆號小白AI
或者網站 xiaobaiai.net