springboot系列之02-須要瞭解的宏觀知識點

未經容許,不得轉載java

原做者:字母哥博客web

本文完整系列出自:springboot深刻淺出系列redis

1、Spring Boot 、 Spring MVC 、Spring對比

首先你須要明白一件事情:Spring Boot項目目的並非替換Spring、SpringMVC,而是使他們用起來更加簡單。spring

Spring 框架數據庫

Spring框架最核心的特性就是依賴注入DI(Dependency Injecttion)和控制反轉IOC(Inversion Of Control)。若是你可以合理的使用DI和IOC,能夠開發出鬆耦合、擴展性好的的應用程序。編程

Spring MVCtomcat

Spring MVC提供了一種友好的方式來開發Web應用程序。 經過使用諸如Dispatcher Servlet,ModelAndView和View Resolver,能夠輕鬆開發Web應用程序。安全

Spring Bootspringboot

Spring 和 Spring MVC最大的弊病在於存在大量的配置,而且這些配置在不一樣的項目中具備很高的類似性。從而致使重複配置,繁瑣並且雜亂!bash

Spring Boot指望經過結合自動配置和starters來解決了這個問題。 另外,Spring Boot還提供了一些功能,能夠更快地構建可用於生產環境的應用程序。

2、Spring Boot 自動配置

Spring和Spring MVC應用程序裏面有大量的XML或Java Bean配置。Spring Boot爲解決這個問題,提供一種新的解決方案,新的思惟方式。

springboot思考的方式:是否是能夠更加智能一點,當Spring中加入一些新的jar包,能夠自動的配置一些bean。 好比:Spring MVC JAR位於類路徑中時,自動配置Dispatcher Servlet。固然,當這些自動的默認配置不符合咱們的要求的時候,咱們能夠修改。

3、什麼是Spring Boot Starter?

Spring Boot Starter是一組被依賴第三方類庫的集合。

若是你要開發一個web應用程序,就經過包管理工具(如maven)引入spring-boot-starter-web就能夠了,而不用分別引入下面這麼多依賴類庫,spring-boot-starter-web一次性幫你引入下面的這些經常使用類庫。

  • Spring — spring 核心, beans, context上下文, AOP面向切面
  • Web MVC — Spring MVC
  • Jackson — JSON數據的序列化與反序列化
  • Validation — Hibernate參數校驗及校驗API
  • 嵌入式 Servlet Container — Tomcat
  • 日誌框架Logging — logback, slf4j

4、什麼是Spring Boot Starter Parent

全部的Spring Boot項目默認使用spring-boot-starter-parent做爲應用程序的父項目。

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.0.RELEASE</version>
</parent>
複製代碼

繼承父項目的好處在於: 統一java版本配置和其餘的一些依賴類庫的版本。也就是說,你引入的第三方類庫不要加版本號,父項目替你管理版本,並且是通過兼容性測試的。比你本身隨便引入一個版本兼容性更好。

固然父項目只能幫你管理一些經常使用類庫的版本,若是你引入一些不經常使用的jar,仍是要本身管理版本號及兼容性!

5、嵌入式web容器

Spring boot打成jar包,默認包含嵌入式的web容器:tomcat。你能夠簡單的使用以下命令啓動一個web服務:

java -jar springboot-demo.jar
複製代碼

這更有利於微服務的部署及微服務的構建、啓動、擴容。Spring Boot還支持Jetty和Undertow做爲web容器。

6、Spring Data

Spring Data的目標是提供一種更友好的方式或者是API來存取數據。包括對於關係型數據庫和NOSQL數據的支持。好比:

  • Spring Data JPA — 關係型數據庫操做的API,友好且易於使用
  • Spring Data MongoDB -MongoDB的操做API
  • Spring Data REST — 從持久層Repositories自動生成服務層API,暴露 REST APIs 接口。超級好用!

固然,Spring Data還有更多好用的特性和支持等待你去探索!

7、spring boot2.x新特性

7.1.基礎環境升級

  • 最低 JDK 8,支持 JDK 9,再也不支持 Java 6 和 7。Spring Boot 2.0 要求 Java 8 做爲最低版本,許多現有的 API 已更新,以利用 Java 8 的特性。 例如,接口上的默認方法,函數回調以及新的 API,如 javax.time。
  • 若是你正在使用 Java 7 或更早版本,則在開發 Spring Boot 2.0 應用程序以前,須要升級你的 JDK。

7.2.依賴組件升級

  • Jetty 9.4,Jetty 是一個開源的 Servlet 容器,它爲基於 Java 的 Web 內容,例如 JSP 和 Servlet 提供運行環境。Jetty 是使用 Java 語言編寫的,它的 API 以一組 JAR 包的形式發佈。
  • Tomcat 8.5,Apache Tomcat 8.5.x 旨在取代 8.0.x,徹底支持 Java 9。
  • Flyway 5,Flyway 是獨立於數據庫的應用、管理並跟蹤數據庫變動的數據庫版本管理工具。用通俗的話講,Flyway 能夠像 SVN 管理不一樣人的代碼那樣,管理不一樣人的 SQL 腳本,從而作到數據庫同步。
  • Hibernate 5.2,Hibernate 是一款很是流行的 ORM 框架。
  • Gradle 3.4,Spring Boot 的 Gradle 插件在很大程度上已被重寫,有了重大的改進。
  • Thymeleaf 3.0,Thymeleaf 3 相對於 Thymeleaf 2 有很是大的性能提高。

7.3. 默認軟件替換

  • 默認數據庫鏈接池已從 Tomcat 切換到 HikariCP,HikariCP 是一個高性能的 JDBC 鏈接池,Hikari 是日語「光」的意思。
  • redis客戶端默認使用 Lettuce,替換掉Jedis。Lettuce 是一個可伸縮的線程安全的 Redis 客戶端,用於同步、異步和反應使用。多個線程能夠共享同一個 RedisConnection,它利用優秀 Netty NIO 框架來高效地管理多個鏈接,支持先進的 Redis 功能,如 Sentinel、集羣、流水線、自動從新鏈接和 Redis 數據模型。

7.4.新技術的引入

  • 響應式編程WebFlux,重要的變革,後續章節會詳細展現
  • 支持 Quartz。Spring Boot 1.0 並無提供對 Quartz 的支持,以前出現了各類集成方案,Spring Boot 2.0 給出了最簡單的集成方式。
  • 對Kotlin 的支持
  • JOOQ 的支持。JOOQ 是基於 Java 訪問關係型數據庫的工具包。JOOQ 既吸收了傳統 ORM 操做數據的簡單性和安全性,又保留了原生 SQL 的靈活性,它更像是介於 ORMS 和 JDBC 的中間層。

7.5.彩蛋

在 Spring Boot 1.0 項目中 src/main/resources 路徑下新建一個 banner.txt 文件,文件中寫入一些字符,啓動項目時就會發現默認的 Banner 被替換了,到了 Spring Boot 2.0 如今能夠支持 Gif 文件的打印,Spring Boot 2.0 在項目啓動的時候,會將 Gif 圖片的每個畫面,按照順序打印在日誌中,全部的畫面打印完畢後,纔會啓動 Spring Boot 項目。

未經容許,不得轉載

原做者:字母哥博客

本文完整系列出自:springboot深刻淺出系列

相關文章
相關標籤/搜索