b spring boot 簡單介紹

—> go to 總目錄


照着演講資料的去寫的簡單易懂,同時兼顧技術文檔的條理性和深入性。
spring是一個單純的java開發框架,spring-boot是把腳手架也做了進去,構建、打包和不同層面模塊的集成,都做了更好的優化。
文檔寫的非常好。

1. Overview

詳見1

2. Getting started

what,how and why have the Spring boot。

2.1 spring boot 是什麼

使創建一個獨立部署,產品級的spring-based的應用更容易。
目的

  • 對於Spring的開發者,提供更快和更廣泛的開始
  • 開箱即用,但是又可以對變化的需求快速的響應
  • 爲項目提供大量且廣泛的非功能性需求(內嵌的servers,安全,metric,health checks 和擴展性配置)
  • 絕對沒有代碼生成和不需要xml配置

2.2 系統需求

System Requirements

2.2.1 Servlet Containers

在這裏插入圖片描述

2.3 安裝Spring boot

要求JDK 8+

2.3.1 安裝基礎軟件

maven

maven 3.3+ ,idea直接解決

gradle

2.3.2 Spring Boot CLI 安裝

2.3.3 Spring boot版本的升級

舊版本的升級。

2.4 開發第一個Spring boot應用(傻瓜式不講解)

關注點在於基礎pom的作用

2.4.1 創建pom

在這裏插入圖片描述

2.4.2 添加依賴

Starters

Spring boot提供很多"Starters",讓你去把jar添到classpath。使用spring-boot-starter-parent去做冒煙測試。
同時spring-boot-starter-parent也會提供有用的Maven默認設置。
比如這會用一個spring-boot-starter-web
在這裏插入圖片描述

寫幾行代碼 code

在這裏插入圖片描述
@RestController 相當於@Controller + @ResponseBody。@ResponseBody就是把返回值序列化成字符串。
@EnableAutoConfiguration
會猜測你的配置比如spring-boot-starter-web就會猜你要開啓Spring MVC和Tomcat,它會初始化一系列的bean。

auto-configuration被設計來和"Starters"一起工作,但是兩個概念沒有強綁。你可以自有的選擇在starters之外的jar包,Spring Boot 也會做最好的自動配置。

運行 run

maven 命令去執行
在這裏插入圖片描述

打包 jar(fat jar的由來)

我們的例子依賴着包含着容器的jar文件(意味值包含依賴)。執行的jar包有時候會被稱爲"fat jars",它會包含你運行時的所有依賴。

Executable jars和Java
java本身不能提供一個標準的方式去內嵌依賴的jar文件。當你想要發佈一個容器的應用的時候,可能會有問題(沒依賴)。
解決的辦法是很多開發者使用了uber的jars。一個uber的jar打包了所有應用的依賴到一個獨立的結構裏面。這種方式的問題是很難去看到你應用裏到底用了那些libraries,也會導致同名文件的覆蓋。Spring Boot 會採取不同的方法讓你內嵌jar包,後面會講到。

maven插件負責來打包,需要把這個加到pom中去
在這裏插入圖片描述

3使用 Spring Boot

這個章節告訴你使用SpringBoot的細節

3.1 構建系統

推薦你是用成熟的構建系統比如maven和Gradle,也方便去推送到maven倉庫。也支持其他系統比如Ant

  • maven
  • grale
  • ant

3.1.1 依賴管理

3.1.2 maven

使用spring-boot-starter-parent來設定默認設置。

  • Java 1.8作爲默認編譯級別
  • UTF-8 source encoding
  • 依賴管理的繼承,使你不用取指定一些依賴的version自動獲得默認的版本
  • 打包階段會有 repacke的標記
  • 明智的 resource filtering
  • 明智的插件管理(exec plugin,Git commit ID 和shade)
  • 明智的的資源 過濾,對application.properties和application.yml

注意application.properties和application.yml接受${…}
maven接受@..@佔位符,你也可以使用resource.delimiter來覆蓋maven的屬性。

3.1.5 Starts列表

Starter是一些列便利的依賴描述器包含在你的應用裏。可以一站式獲取spring的特性,甚至不需要複製粘貼或者通過簡單的的code來體驗。比如你想要使用Spring 和JPA來訪問database,僅許喲在你的依賴裏包含
spring-boot-starter-data-jpa
starter包含了大量你需要添加在項目裏的依賴。

什麼是name
所有官方的offical starter都有相似的開始spring-boot-starter-*。這個命名結構意味着幫你用name去找到starters。
下列創建一個你自己的starter裏面會介紹,第三方的starter不應該以spring-boot開頭,推薦thirdpartyproject-spring-boot-starter

starter列表

3.2 結構化你的代碼

好的實踐

3.2.1 使用defaultPackage

當一個類沒有packge聲明的時候,它被默認在defalut。但是默認的package應該被避免。因爲使用
@ComponentScan, @ConfigurationPropertiesScan, @EntityScan, 或者 @SpringBootApplication,每一個jar裏面的類都會被讀到。

3.2.2 定位main的應用類

我們推薦把應用的main類放在root package下。@SpringBootApplication註解常常會替代你的主類,也會影響到你搜索路徑路徑包的base package。例如被和JPA一起使用時,@SpringBootApplication註解類標註的註解,會搜索所有@Entity。使用root package的好處是會搜索項目裏所有的組件。

典型的代碼結構

在這裏插入圖片描述

@SpringBootApplication標註的main

在這裏插入圖片描述

3.3 配置類

雖然可以使用xml來配置,但是推薦使用單獨的@Configuration類配置。

3.3.1 導入額外的配置類

你需要把你所有的@Configuration 都導入一個單獨的類@Import。出此外你可以使用@ComponentScan會自動撿起所有的Spring 組件,包括@Configuration

3.3.2 Importing XML Configuration

我們推薦你用@Configuration,但是你還是可以使用@ImportResource去加載。

3.4 Auto-configuration

這個機器企圖去根據你添加的jar依賴,來自動自動配置。比如HSQLDB在你的classpath下,無需手動,Spring auto-config會自動在內存中配置好database。
你需要做的是添加@EnableAutoConfiguration
或者@SpringBootApplication到你的一個@Configuration類上。

由於只需要添加一個
@EnableAutoConfiguration
或者@SpringBootApplication,所以我們推薦你添加在你主要的@Configuration就可以了。

3.4.1 灰度替換 Auto-configuration

自動配置是無侵入的,但是你有時需要去用自己的配置來代替自動配置。比如你定義了DataSourcebean。默認的內嵌database就作爲被封。
如果你需要去看那些自動裝配被使用了,啓動你的應用時附帶-debug。這樣會打開debug的log

3.4.2 關掉特殊的自動裝配。

使用exclude去除
在這裏插入圖片描述
如果不在classpath路徑下,你可以使用excludeName屬性去匹配。
如果你不用@SpringBootApplication而是使用@EnableAutoConfiguration,的話,也可以使用excludeexcludeName。最終你也可以用
spring.autoconfigure.exclude

3.5 依賴注入 Spring Beans and Dependency Injection

你依舊可以使用@ComponentScan和@Autowired。
如果你的代碼結構像上面介紹的那樣,僅需要@ComponentScan,就可以自動註冊
@Component, @Service, @Repository, @Controller
下面使用構造器的方式去初始化bean
在這裏插入圖片描述
如果一個類只有一個構造器可以省去@Autowired
在這裏插入圖片描述

注意final 意味着不能被子類改變

3.6 使用 @SpringBootApplication Annotation

  • @EnableAutoConfiguration會自動打開自動auto-configuration裝置
  • @ComponmentScan,會自動掃描application所在的包的所有@Compent
  • @Configuration:荀彧在context裏註冊額外的beans,或導入額外的配置類。
    在這裏插入圖片描述

沒有什麼東西是強制的,不想用auto-configuration和CompentScan時,你可以選擇關閉掉。

在這裏插入圖片描述

3.7 啓動你的應用

在你的應用中內置一個HTTP server的最大好處是,你可以隨時的運行它,而不要額外的插件或者擴展。spring boot也是。

3.7.1 打開你的IDE

導入

方式一:可執行包

打成執行包使用java -jar

方式二:使用maven

mvn spring-boot run
可以用MAVEN_OPTS=-Xmx1024m來控制maven環境變量

方式三: 熱替換

spring boot只是僅僅繼承了java應用和jvm熱替換,開箱即用。
spring-boot-devtools種包含了熱替換

3.8 Developer Tools 開發工具

開發工具有一堆工具在開發階段有用
引入
在這裏插入圖片描述

3.8.1 設置默認屬性

3.8.2 自動重啓

3.8.2 熱加載

3.8.4 全局設置

3.8.5 遠程應用

遠程應用啓動

遠程更新

監控文件變動

3.9 爲生產環境打包

可執行的jar,本來就是一個fat.jar,包含了需要的依賴,所以適合雲環境下的部署。
對於生產環境額外的特性,比如健康檢查,auditing,或者metric Rest或者JMX終端,考慮添加spring-boot-actuator

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章