SpringBoot系列-前置知識

lijiangtao發表於2019-02-19

title: SpringBoot系列-前置知識

date: 2019-02-19 13:08:25

categories:

  • tech
  • java
  • framework
  • Spring
  • SpringBoot

tags: [Java,Spring,SpringBoot,Spring5,Maven]


Spring 框架

Spring框架是一個輕量的企業級的開發一站式解決方案,Spring框架已經是輕量級Java EE實際上的的行業標準。

Spring 模組

Spring是模組化的,開發者可以選擇自己需要的模組進行整合。

Spring核心的模組包含:Core Container(核心容器)、Data Access(資料訪問)、AOP(面像切面)、Web(Web整合功能)、Test(測試),等等。

除了Spring Core Container(Spring核心容器)是必須的,其他的組成 Spring 框架的每個模組都可以單獨存在,或者與其他一個或多個模組聯合實現。

Spring 核心容器提供了 Spring 框架的基本功能,管理著Spring應用中bean的建立、配置和管理。

Spring 核心容器的主要元件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用DI將應用程式的配置和依賴性規範與實際的應用程式程式碼分開。

Spring框架模組

下面是Spring核心模組的概要:

  • Spring 上下文:

Spring 上下文是一個配置檔案,向 Spring 框架提供上下文資訊。

Spring 上下文提供了一種框架式的物件訪問方法,有些象JNDI註冊器。

Context封裝包的特性得自於Beans封裝包,並新增了對國際化(I18N)的支援(例如資源繫結),事件傳播,資源裝載的方式和Context的透明建立,比如說通過Servlet容器。

Spring 上下文和Bean工廠都是 bean 容器 的實現。

  • Spring AOP:

通過配置管理特性,Spring AOP 模組直接將面向方面的程式設計功能整合到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何物件支援 AOP。

Spring AOP 模組為基於 Spring 的應用程式中的物件提供了事務管理服務。

  • Spring DAO:

JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同資料庫供應商丟擲的錯誤訊息。異常層次結構簡化了錯誤處理,並且極大地降低了需要編寫的異常程式碼數量(例如開啟和關閉連線)。

Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。

  • Spring ORM:

Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的物件關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。

  • Spring Web 模組:

Web 上下文模組建立在應用程式上下文模組之上,為基於 Web 的應用程式提供了上下文。

  • Spring MVC 框架:

MVC 框架是一個全功能的構建 Web 應用程式的 MVC 實現。通過策略介面,MVC 框架變成為高度可配置的,MVC 容納了大量檢視技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 優點

Spring框架有如下優點:

  • 低侵入式設計,程式碼汙染極低。

  • 獨立於各種應用伺服器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾。

  • Spring的DI機制/IoC容器,降低了業務物件替換的複雜性,提高了元件之間的解耦。

  • Spring的AOP支援允許將一些通用任務,例如安全、事務、日誌等進行集中式管理,從而提供了更好的複用。

  • Spring的ORM和DAO提供了與第三方持久層框架的良好整合,並簡化了底層的資料庫訪問,Spring Data則提供了對NoSQL的良好支援。

  • Spring並不是針對應用的某一層,而是對應用的各層都提供瞭解決方案。

  • Spring具有高度的開放性,並不強制應用完全依賴於Spring,開發者可自由選用Spring框架的部分或全部。

Spring 5

Spring在2017 年9月釋出Spring 5的通用版本 (GA),這是自 2013 年12月以來第一個主要 Spring Framework 版本。

Spring 5 提供了一些人們期待已久的改進,相容 Java 8 和 Java 9,還採用了一種全新的程式設計範例,並提供了反應式流的支援。

Spring 5主要有以下新特性:

  • 升級到 Java SE 8 和 Java EE 7
  • 反應式程式設計模型
  • 使用註解進行程式設計
  • 函數語言程式設計
  • 使用 REST 端點執行反應式程式設計
  • HTTP/2 支援
  • Kotlin 和 Spring WebFlux
  • 使用 Lambda 表示式註冊 bean
  • Spring WebMVC 支援最新的 API
  • 使用 JUnit 5 執行條件和併發測試
  • 使用 Spring WebFlux 執行整合測試
  • 包清理和棄用
  • 對 Spring 核心和容器的一般更新

Spring 生態

  • Spring Boot:一站式快速開發解決專案
  • Spring Cloud:提供對分散式系統的支援
  • Spring Data:提供對主流的關係型及NOSQL型資料庫的封裝支援
  • Spring Security:支援系統授權、認證的支援
  • Spring Session:提供對session管理的支援
  • Spring Batch:提供對大資料的批處理簡化處理優化的支援
  • Spring Social:提供對社交網路API的整合,如Facebook、Google等
  • Spring AMQP:提供對AMQP的訊息支援
  • Spring LDAP:提供並簡化使用LDAP的支援
  • Spring XD:用來簡化對大資料應用開發
  • Spring Integration:通過訊息機制對企業整合模式EIP的支援
  • Spring Mobile:支援對手機裝置檢測等功能
  • Spring for Android:提供在安卓平臺消費restful api的支援
  • Spring Web Flow:基於spring mvc提供對嚮導流程式的開發
  • Spring Web Services:提供基於SOAP/Web協議服務支援

Spring Boot

什麼是Spring Boot

Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程,該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。

Spring Boot 預設配置了很多框架的使用方式,就像 Maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架。

它的核心設計思想是:約定優於配置。

Spring Boot 所有開發細節都是依據此思想進行實現的。

Spring Boot 是一套全新的框架,它來自於 Spring 大家族,因此 Spring 所有具備的功能它都有並且更容易使用;同時還簡化了基於 Spring 的應用開發,通過少量的程式碼就能建立一個獨立的、產品級別的 Spring 應用。

SpringBoot在Spring生態中的位置:

SpringBoot在Spring生態中的位置

Spring Boot 的優點

  • 使編碼變得簡單 : 推薦使用註解,元件自動裝配,外部化配置,高度封裝,開箱即用

  • 使配置變得簡單: 約定大於配置,主流框架無配置整合,專注核心業務,提供快速整合新技術、快速構建、自動配置的能力

  • 使部署變得簡單: 內嵌Tomcat、Jetty等Web容器,支援獨立執行

  • 使監控變得簡單: 自帶專案監控實現

Spring Boot 2.0 的新變化

  • 基於Spring 5 構建,支援Spring 5的新特性

  • 為元件的響應式程式設計提供了簡化配置,如Reactive Spring Data,Reactive Spring Security等

  • 依賴版本升級,如要求Java8以上並支援Java 9,Maven3.2或更高版本,Tomcat 8或更高版本,Hibernate 5.2或更高版本等

Maven

  • 什麼是Maven

Apache Maven是一個專案管理和理解工具,它基於專案物件模型(POM)的概念,它可以管理專案的構建、報告和文件。

  • Maven的parent和modules

Maven通過元素宣告父專案依賴,父專案宣告的依賴會自動傳遞到子專案。

在專案的 parent 層,可以通過 元素來管理 jar 包的版本,讓子專案中引用一個依賴而不用顯式宣告版本號。


links:

author: ijiangtao.net


相關文章