一、springboot解決了什么?
避免了繁雜的xml配置,框架自動幫我們完成了相關的配置,當我們需要進行相關插件集成的時候,只需要將相關的starter通過相關的maven依賴引進,並可以進行相關的插件整合開發,
當然,springboot簡化了開發的流程,當我們需要插件的其他版本也可以使用自己的配置,但是需要對spring以及相關框架很熟悉,所以,高樓平地起,基礎的框架和插件也是需要我們深入學習的;
總的來說 :springboot使配置、部署、監控、開發都變得相對簡單。
二、spring2.0的特性
- 遵循“約定優於配置”的原則,簡化配置
- 可以完全脫離XML配置文件,采用注解配置和java Config
- 內嵌Servlet容器,應用可用jar包執行:java -jar
- 快速完成項目搭建、整合第三方類庫,方便易用
- 提供了starter POM, 能夠非常方便的進行包管理, 簡化包管理配置
- 與Spring cloud天然集成,spring boot是目前java體系內實現微服務最佳方案
三、springboot引入的簡單方法:
- 通過maven引入springboot-XXXX-starter
- 修改ymal或properties全局統一配置文件
- 加入一個Java Config。這個屬於個性化配置,如果使用通用配置,這一步不需要。
什么是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
什么是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>
其他優點:
1、springboot 內嵌了Tomcat容器,所打成的jar包可以直接單獨運行
java -jar springboot-demo.jar
2、Spring Data的目標是提供一種更友好的方式或者是API來存取數據。包括對於關系型數據庫和NOSQL數據的支持
-
- Spring Data JPA — 關系型數據庫操作的API,友好且易於使用
- Spring Data MongoDB -MongoDB的操作API
- Spring Data REST — 從持久層Repositories自動生成服務層API,暴露 REST APIs 接口。超級好用!
spring boot2.x新特性:
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。
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 有非常大的性能提升。
3)、默認軟件的替換
- 默認數據庫連接池已從 Tomcat 切換到 HikariCP,HikariCP 是一個高性能的 JDBC 連接池,Hikari 是日語“光”的意思。
- redis客戶端默認使用 Lettuce,替換掉Jedis.Lettuce 是一個可伸縮的線程安全的 Redis 客戶端,用於同步、異步和反應使用。多個線程可以共享同一個 RedisConnection,它利用優秀 Netty NIO 框架來高效地管理多個連接,支持先進的 Redis 功能,如 Sentinel、集群、流水線、自動重新連接和 Redis 數據模型。
4)、新技術的引入
- 響應式編程WebFlux,重要的變革,后續章節會詳細展示
- 支持 Quartz,Spring Boot 1.0 並沒有提供對 Quartz 的支持,之前出現了各種集成方案,Spring Boot 2.0 給出了最簡單的集成方式。
- 對Kotlin 的支持
- JOOQ 的支持,JOOQ 是基於 Java 訪問關系型數據庫的工具包。JOOQ 既吸取了傳統 ORM 操作數據的簡單性和安全性,又保留了原生 SQL 的靈活性,它更像是介於 ORMS 和 JDBC 的中間層。
5)、其他
在 Spring Boot 1.0 項目中 src/main/resources 路徑下新建一個 banner.txt 文件,文件中寫入一些字符,啟動項目時就會發現默認的 Banner 被替換了,到了 Spring Boot 2.0 現在可以支持 Gif 文件的打印,Spring Boot 2.0 在項目啟動的時候,會將 Gif 圖片的每一個畫面,按照順序打印在日志中,所有的畫面打印完畢后,才會啟動 Spring Boot 項目。