title: SpringBoot系列-前置知識(shí)
date: 2019-02-19 13:08:25
categories:
- tech
- java
- framework
- Spring
- SpringBoot
tags: [Java,Spring,SpringBoot,Spring5,Maven]
Spring 框架
Spring框架是一個(gè)輕量的企業(yè)級(jí)的開(kāi)發(fā)一站式解決方案,Spring框架已經(jīng)是輕量級(jí)Java EE實(shí)際上的的行業(yè)標(biāo)準(zhǔn)。
Spring 模塊
Spring是模塊化的,開(kāi)發(fā)者可以選擇自己需要的模塊進(jìn)行集成。
Spring核心的模塊包含:Core Container(核心容器)、Data Access(數(shù)據(jù)訪(fǎng)問(wèn))、AOP(面像切面)、Web(Web集成功能)、Test(測(cè)試),等等。
除了Spring Core Container(Spring核心容器)是必須的,其他的組成 Spring 框架的每個(gè)模塊都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。
Spring 核心容器提供了 Spring 框架的基本功能,管理著Spring應(yīng)用中bean的創(chuàng)建、配置和管理。
Spring 核心容器的主要組件是 BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory 使用DI將應(yīng)用程序的配置和依賴(lài)性規(guī)范與實(shí)際的應(yīng)用程序代碼分開(kāi)。

下面是Spring核心模塊的概要:
- Spring 上下文:
Spring 上下文是一個(gè)配置文件,向 Spring 框架提供上下文信息。
Spring 上下文提供了一種框架式的對(duì)象訪(fǎng)問(wèn)方法,有些象JNDI注冊(cè)器。
Context封裝包的特性得自于Beans封裝包,并添加了對(duì)國(guó)際化(I18N)的支持(例如資源綁定),事件傳播,資源裝載的方式和Context的透明創(chuàng)建,比如說(shuō)通過(guò)Servlet容器。
Spring 上下文和Bean工廠都是 bean 容器 的實(shí)現(xiàn)。
- Spring AOP:
通過(guò)配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對(duì)象支持 AOP。
Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。
- Spring DAO:
JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來(lái)管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫(xiě)的異常代碼數(shù)量(例如打開(kāi)和關(guān)閉連接)。
Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。
- Spring ORM:
Spring 框架插入了若干個(gè) ORM 框架,從而提供了 ORM 的對(duì)象關(guān)系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務(wù)和 DAO 異常層次結(jié)構(gòu)。
- Spring Web 模塊:
Web 上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于 Web 的應(yīng)用程序提供了上下文。
- Spring MVC 框架:
MVC 框架是一個(gè)全功能的構(gòu)建 Web 應(yīng)用程序的 MVC 實(shí)現(xiàn)。通過(guò)策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術(shù),其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 優(yōu)點(diǎn)
Spring框架有如下優(yōu)點(diǎn):
低侵入式設(shè)計(jì),代碼污染極低。
獨(dú)立于各種應(yīng)用服務(wù)器,基于Spring框架的應(yīng)用,可以真正實(shí)現(xiàn)Write Once,Run Anywhere的承諾。
Spring的DI機(jī)制/IoC容器,降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性,提高了組件之間的解耦。
Spring的AOP支持允許將一些通用任務(wù),例如安全、事務(wù)、日志等進(jìn)行集中式管理,從而提供了更好的復(fù)用。
Spring的ORM和DAO提供了與第三方持久層框架的良好整合,并簡(jiǎn)化了底層的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),Spring Data則提供了對(duì)NoSQL的良好支持。
Spring并不是針對(duì)應(yīng)用的某一層,而是對(duì)應(yīng)用的各層都提供了解決方案。
Spring具有高度的開(kāi)放性,并不強(qiáng)制應(yīng)用完全依賴(lài)于Spring,開(kāi)發(fā)者可自由選用Spring框架的部分或全部。
Spring 5
Spring在2017 年9月發(fā)布Spring 5的通用版本 (GA),這是自 2013 年12月以來(lái)第一個(gè)主要 Spring Framework 版本。
Spring 5 提供了一些人們期待已久的改進(jìn),兼容 Java 8 和 Java 9,還采用了一種全新的編程范例,并提供了反應(yīng)式流的支持。
Spring 5主要有以下新特性:
- 升級(jí)到 Java SE 8 和 Java EE 7
- 反應(yīng)式編程模型
- 使用注解進(jìn)行編程
- 函數(shù)式編程
- 使用 REST 端點(diǎn)執(zhí)行反應(yīng)式編程
- HTTP/2 支持
- Kotlin 和 Spring WebFlux
- 使用 Lambda 表達(dá)式注冊(cè) bean
- Spring WebMVC 支持最新的 API
- 使用 JUnit 5 執(zhí)行條件和并發(fā)測(cè)試
- 使用 Spring WebFlux 執(zhí)行集成測(cè)試
- 包清理和棄用
- 對(duì) Spring 核心和容器的一般更新
Spring 生態(tài)
- Spring Boot:一站式快速開(kāi)發(fā)解決項(xiàng)目
- Spring Cloud:提供對(duì)分布式系統(tǒng)的支持
- Spring Data:提供對(duì)主流的關(guān)系型及NOSQL型數(shù)據(jù)庫(kù)的封裝支持
- Spring Security:支持系統(tǒng)授權(quán)、認(rèn)證的支持
- Spring Session:提供對(duì)session管理的支持
- Spring Batch:提供對(duì)大數(shù)據(jù)的批處理簡(jiǎn)化處理優(yōu)化的支持
- Spring Social:提供對(duì)社交網(wǎng)絡(luò)API的集成,如Facebook、Google等
- Spring AMQP:提供對(duì)AMQP的消息支持
- Spring LDAP:提供并簡(jiǎn)化使用LDAP的支持
- Spring XD:用來(lái)簡(jiǎn)化對(duì)大數(shù)據(jù)應(yīng)用開(kāi)發(fā)
- Spring Integration:通過(guò)消息機(jī)制對(duì)企業(yè)集成模式EIP的支持
- Spring Mobile:支持對(duì)手機(jī)設(shè)備檢測(cè)等功能
- Spring for Android:提供在安卓平臺(tái)消費(fèi)restful api的支持
- Spring Web Flow:基于spring mvc提供對(duì)向?qū)Я鞒淌降拈_(kāi)發(fā)
- Spring Web Services:提供基于SOAP/Web協(xié)議服務(wù)支持
Spring Boot
什么是Spring Boot
Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新 Spring 應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。
Spring Boot 默認(rèn)配置了很多框架的使用方式,就像 Maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架。
它的核心設(shè)計(jì)思想是:約定優(yōu)于配置。
Spring Boot 所有開(kāi)發(fā)細(xì)節(jié)都是依據(jù)此思想進(jìn)行實(shí)現(xiàn)的。
Spring Boot 是一套全新的框架,它來(lái)自于 Spring 大家族,因此 Spring 所有具備的功能它都有并且更容易使用;同時(shí)還簡(jiǎn)化了基于 Spring 的應(yīng)用開(kāi)發(fā),通過(guò)少量的代碼就能創(chuàng)建一個(gè)獨(dú)立的、產(chǎn)品級(jí)別的 Spring 應(yīng)用。
SpringBoot在Spring生態(tài)中的位置:

Spring Boot 的優(yōu)點(diǎn)
使編碼變得簡(jiǎn)單 : 推薦使用注解,組件自動(dòng)裝配,外部化配置,高度封裝,開(kāi)箱即用
使配置變得簡(jiǎn)單: 約定大于配置,主流框架無(wú)配置集成,專(zhuān)注核心業(yè)務(wù),提供快速集成新技術(shù)、快速構(gòu)建、自動(dòng)配置的能力
使部署變得簡(jiǎn)單: 內(nèi)嵌Tomcat、Jetty等Web容器,支持獨(dú)立運(yùn)行
使監(jiān)控變得簡(jiǎn)單: 自帶項(xiàng)目監(jiān)控實(shí)現(xiàn)
Spring Boot 2.0 的新變化
基于Spring 5 構(gòu)建,支持Spring 5的新特性
為組件的響應(yīng)式編程提供了簡(jiǎn)化配置,如Reactive Spring Data,Reactive Spring Security等
依賴(lài)版本升級(jí),如要求Java8以上并支持Java 9,Maven3.2或更高版本,Tomcat 8或更高版本,Hibernate 5.2或更高版本等
Maven
- 什么是Maven
Apache Maven是一個(gè)項(xiàng)目管理和理解工具,它基于項(xiàng)目對(duì)象模型(POM)的概念,它可以管理項(xiàng)目的構(gòu)建、報(bào)告和文檔。
- Maven的parent和modules
Maven通過(guò)<parent>元素聲明父項(xiàng)目依賴(lài),父項(xiàng)目聲明的依賴(lài)會(huì)自動(dòng)傳遞到子項(xiàng)目。
在項(xiàng)目的 parent 層,可以通過(guò) <dependencyManagement> 元素來(lái)管理 jar 包的版本,讓子項(xiàng)目中引用一個(gè)依賴(lài)而不用顯式聲明版本號(hào)<version>。
links:
- ijiangtaonet
- Spring體系常用項(xiàng)目一覽
- Spring Docs 4.0.x Overview
- IBM-Spring5
- 開(kāi)源中國(guó)-Spring Framework 5.0 新特性
- IBM-Spring Framework 5 中的新特性
- Spring Framework Documentation Version 5.1.4.RELEASE
- https://blog.csdn.net/sinat_26342009/article/details/87703704
- https://my.oschina.net/ijiangtao/blog/3011844
- https://juejin.im/post/5c6b9435e51d457fd6233aa1
author: ijiangtao.net