spring boot參考文件——目錄
sprint boot操作指南
-------------------------
作者:
Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave
2.0.3.RELEASE
Copyright © 2012-2018
無論任何用途,本文件全部免費
-----------------------------------
目錄
I spring boot文件
1. 關於本文件
2. 幫助
3. 第一步
4. 使用spring boot
5. 學習spring boot的特性
6. 產品在生產使用
7. 高階主題
II 啟動
8. 介紹spring boot
9. 系統要求
9.1 servlet容器
10. 安裝spring boot
10.1 適用於java開發者的安裝指令
10.1.1 maven安裝
10.2 安裝spring boot命令列
10.2.1 手動安裝
10.2.2 快速啟動spring命令列
10.3 spring boot早期版本的升級
11. 開發第一個spring boot應用
11.1 建立pom
11.2 新增類路徑依賴
11.3 寫程式碼
11.3.1 @RestController和@RequestMapping註解
11.3.2 @EnableAutoConfiguration註解
11.3.3 main方法
11.4 執行示例
11.5 建立可執行jar
12. 導讀
III 使用spring boot
13. 構建系統
13.1 依賴管理
13.2 maven
13.2.1 繼承啟動父本
13.2.2 使用pom中沒有父本的spring boot
13.2.3 使用spring boot的maven外掛
13.3 啟動項
14. 結構化程式碼
14.1 使用預設包
14.2 定位主應用類
15. 配置類
15.1 匯入附加配置類
15.2 匯入XML配置
16. 自動配置
16.1 逐步取代自動配置
16.2 禁用特定自動配置類
17. spring beans和依賴注入
18. 使用@SpringBootApplication註解
19. 執行應用程式
19.1 在整合開發環境中執行
19.2 打包執行應用程式
19.3 使用maven外掛
19.4 熱部署
20. 開發者工具
20.1 預設屬性
20.2 自動重啟
20.2.1 條件評估中的日誌改變
20.2.2 排除項
20.2.3 檢視更多路徑
20.2.4 禁用重啟
20.2.5 使用觸發器檔案
20.2.6 自定義重啟類載入器
20.2.7 限制
20.3 LiveReload
20.4 全域性設定
20.5 遠端應用
20.5.1 執行遠端客戶端應用
20.5.2 遠端更新
21. 將應用打包成產品
22. 導讀
IV spring boot特性
23. SpringApplication
23.1 啟動失敗
23.2 自定義Bannar
23.3 自定義SpringApplication
23.4 流暢的建造者API
23.5 應用事件和監聽器
23.6 網路環境
23.7 獲取應用引數
23.8 使用ApplicationRunner或CommandLineRunner
23.9 應用退出
23.10 管理特性
24. 通用化(外部化)配置
24.1 配置隨機值
24.2 新增命令列配置資訊
24.3 應用配置檔案
24.4 特定配置檔案
24.5 配置檔案中的佔位符
24.6 使用YAML代替配置檔案
24.6.1 現在YAML
24.6.2 在spring環境中將YAML匯出為Properties配置檔案
24.6.3 Multi-profile YAML文件
24.6.4 YAML的不足
24.7 型別安全的配置檔案
24.7.1 第三方配置
24.7.2 輕鬆繫結
24.7.3 複雜型別合併
24.7.4 配置轉換 轉換時長
24.7.5 @ConfigurationProperties驗證
24.7.6 @ConfigurationProperties vs. @Value
25. 配置檔案
25.1 新增動態配置檔案
25.2 以程式設計的方式設定配置檔案
25.3 具體化配置檔案
26. 日誌
26.1 日誌格式
26.2 控制檯輸出
26.2.1 彩色編碼輸出
26.3 檔案輸出
26.4 日誌等級
26.5 自定義日誌配置
26.6 日誌配置擴充套件
26.6.1 具體化配置
26.6.2 環境配置
27. 開發web應用
27.1 spring web mvc框架
27.1.1 spring mvc自動配置
27.1.2 HttpMessageConverters
27.1.3 自定義json序列化和反序列化器
27.1.4 MessageCodesResolver
27.1.5 靜態內容
27.1.6 歡迎頁面
27.1.7 自定義圖示
27.1.8 路徑匹配和內容協商
27.1.9 ConfigurableWebBindingInitializer
27.1.10 模板引擎
27.1.11 錯誤處理
自定義錯誤頁
將錯誤頁對映到MVC以外
27.1.12 Spring HATEOAS
27.1.13 CORS支援
27.2 Spring WebFlux框架
27.2.1 Spring WebFlux自動配置
27.2.2 HTTP使用HttpMessageReaders和HttpMessageWriters編解碼
27.2.3 靜態內容
27.2.4 模板引擎
27.2.5 錯誤處理
自定義錯誤頁
27.2.6 Web過濾器
27.3 JAX-RS and Jersey
27.4 嵌入式sevlet容器的支援
27.4.1 Servlets, Filters, 和 listeners
將Servlets, Filters, 和 listeners註冊為bean
27.4.2 sevlet上下文初始化
掃描Servlets, Filters, 和 listeners
27.4.3 ServletWebServerApplicationContext
27.4.4 自定義嵌入式容器
程式設計定製
直接定製ConfigurableServletWebServerFactory
27.4.5 JSP限制
28. 安全
28.1 MVC安全
28.2 WebFlux安全
28.3 OAuth2
28.3.1 客戶端
28.3.2 伺服器
28.4 Actuator安全
CSRF保護
29. SQL資料庫
29.1 配置資料來源
29.1.1 嵌入式資料庫的支援
29.1.2 連線產品資料庫
29.1.3 連線JNDI資料庫
29.2 使用jdbc模板
29.3 JPA和“Spring Data”
29.3.1 實體類
29.3.2 Spring Data JPA倉庫
29.3.3 建立和刪除JPA資料庫
29.3.4 在檢視中開啟實體管理器
29.4 使用H2的Web控制檯
29.4.1 改變H2控制檯路徑
29.5 使用jOOQ
29.5.1 程式碼生成
29.5.2 使用DSLContext
29.5.3 jOOQ SQL Dialect
29.5.4 自定義jOOQ
30. 使用NoSQL技術
30.1 Redis
30.1.1 連線redis
30.2 MongoDB
30.2.1 連線MongoDB資料庫
30.2.2 MongoTemplate
30.2.3 Spring Data MongoDB倉庫
30.2.4 嵌入式mongo
30.3 Neo4j
30.3.1 連線Neo4j資料庫
30.3.2 使用內嵌模式
30.3.3 Neo4jSession
30.3.4 Spring Data Neo4j倉庫
30.3.5 倉庫示例
30.4 GemFire(類似redis)
30.5 Solr
30.5.1 連線Solr
30.5.2 Spring Data Solr倉庫
30.6 Elasticsearch
30.6.1 使用Jest連線Elasticsearch
30.6.2 使用Spring Data連線Elasticsearch
30.6.3 Spring Data Elasticsearch倉庫
30.7 Cassandra
30.7.1 連線Cassandra資料庫
30.7.2 Spring Data Cassandra倉庫
30.8 Couchbase
30.8.1 連線Couchbase
30.8.2 Spring Data Couchbase倉庫
30.9 LDAP
30.9.1 連線LDAP伺服器
30.9.2 Spring Data LDAP倉庫
30.9.3 嵌入式記憶體LDAP伺服器
30.10 InfluxDB
30.10.1 連線InfluxDB
31. 快取
31.1 提供的快取支援
31.1.1. Generic
31.1.2. JCache (JSR-107)
31.1.3. EhCache 2.x
31.1.4. Hazelcast
31.1.5. Infinispan
31.1.6. Couchbase
31.1.7. Redis
31.1.8. Caffeine
31.1.9. Simple
31.1.10. None
32. 訊息傳送
32.1 JMS
32.1.1. ActiveMQ支援
32.1.2. Artemis支援
32.1.3. 使用JNDI ConnectionFactory
32.1.4. 傳送訊息
32.1.5. 接收訊息
32.2 AMQP
32.2.1. RabbitMQ支援
32.2.2. 傳送訊息
32.2.3. 接收訊息
32.3. Apache Kafka支援
32.3.1 傳送訊息
32.3.2 接收訊息
32.3.3 額外Kafka配置
33. 通過RestTemplate使用REST Services(以資訊為中心的表述性狀態轉移(Representational State Transfer,REST))
33.1 RestTemplate定製
34. 通過WebClient使用REST Services
34.1 WebClient定製
35. Validation(校驗)
36. 傳送Email
37. 使用JTA(事物處理架構)分散式處理事物
37.1. 使用Atomikos事物管理器
37.2. 使用Bitronix事物管理器
37.3. 使用Narayana事物管理器
37.4. 使用Java EE Managed事物管理器
37.5. Mixing XA 和 Non-XA JMS 連線
37.6. 支援嵌入式事物管理器
38. Hazelcast
39. Quartz Scheduler
40. spring整合
41. Spring Session
42. 基於JMX的監控和管理
43. 測試
43.1 測試域的依賴
43.2 測試spring應用
43.3 測試spring boot應用
43.3.1. 檢測web應用的型別
43.3.2. 檢測測試配置
43.3.3. 排除測試配置
43.3.4. 使用running server測試
43.3.5. 使用JMX
43.3.6. 模擬和檢視Beans
43.3.7. 自動配置測試
43.3.8. 自動配置json測試
43.3.9. 自動配置Spring MVC測試
43.3.10. 自動配置Spring WebFlux測試
43.3.11. 自動配置Data JPA測試
43.3.12. 自動配置 JDBC測試
43.3.13. 自動配置 jOOQ測試
43.3.14. 自動配置 Data MongoDB測試
43.3.15. 自動配置 Data Neo4j測試
43.3.16. 自動配置 Data Redis測試
43.3.17. 自動配置 Data LDAP測試
43.3.18. 自動配置 REST Clients
43.3.19. 自動配置 Spring REST Docs測試
使用模擬MVC自動配置 REST Docs測試
使用REST Assured自動配置 Spring REST Docs測試
43.3.20. 使用者配置和切片
43.3.21. 使用Spock測試Spring Boot應用
43.4 測試工具
43.4.1. ConfigFileApplicationContextInitializer
43.4.2. TestPropertyValues
43.4.3. OutputCapture
43.4.4. TestRestTemplate
44. WebSockets
45. Web服務
46. 建立自己的自動配置
46.1 瞭解自動配置Beans
46.2 定位自動配置Candidates
46.3 條件註解
46.3.1. Class Conditions
46.3.2. Bean Conditions
46.3.3. Property Conditions
46.3.4. Resource Conditions
46.3.5. Web Application Conditions
46.3.6. SpEL Expression Conditions
46.4 測試你的自動配置
46.4.1 模擬web上下文
46.4.2 覆蓋類路徑
46.5 建立自己的啟動項
46.5.1 命名
46.5.2 自動配置模組
46.5.3 啟動模組
47. Kotlin支援
47.1. 要求
47.2. Null-safety
47.3. Kotlin API
47.3.1. 執行應用
47.3.2. 擴充套件
47.4. 依賴管理
47.5. @ConfigurationProperties
47.6. 測試
47.7. 資源
47.7.1. Further reading
47.7.2. 示例
48. 導讀
V spring boot執行器:Production-ready features
49. 啟動Production-ready features
50. 終端
50.1. 啟動終端
50.2. 暴露終端
50.3. Securing HTTP Endpoints
50.4. 配置終端
50.5. 執行器Web終端的超媒體
50.6. 執行器Web終端路徑
50.7. CORS支援
50.8. 實現定製終端
50.8.1. 接收輸入
輸入型別轉換
50.8.2. 定製Web終端
Web終端請求預測
路徑
HTTP方法
Consumes
Produces
Web終端返回狀態
Web終端請求範圍
Web終端安全
50.8.3. Servlet終端
50.8.4. Controller終端
50.9. 健康度資訊
50.9.1. 自動配置HealthIndicators
50.9.2. 寫入定製HealthIndicators
50.9.3. 反應性健康指示器
50.9.4. 自動配置ReactiveHealthIndicators
50.10. 應用資訊
50.10.1. 自動配置InfoContributors
50.10.2. 定製應用資訊
50.10.3. Git提交資訊
50.10.4. 建立資訊
50.10.5. 寫入定製InfoContributors
51. HTTP上的監控和管理
51.1. 自定義監控終端路徑
51.2. 自定義管理伺服器埠
51.3. 配置管理特性(Management-specific) SSL
51.4. 自定義管理伺服器地址
51.5. 禁止啟用HTTP終端
52. JMX上的監控和管理
52.1. 自定義MBean名稱
52.2. 禁止啟用JMX終端
52.3. 在HTTP上使用JMX的Jolokia
52.3.1. 自定義Jolokia
52.3.2. 禁止啟用Jolokia
53. 日誌
53.1. 配置日誌
54. Metrics
54.1. 啟動
54.2. 監控系統支援
54.2.1. Atlas
54.2.2. Datadog
54.2.3. Ganglia
54.2.4. Graphite
54.2.5. Influx
54.2.6. JMX
54.2.7. New Relic
54.2.8. Prometheus
54.2.9. SignalFx
54.2.10. Simple
54.2.11. StatsD
54.2.12. Wavefront
54.3. Metrics支援
54.3.1. Spring MVC Metrics
54.3.2. Spring WebFlux Metrics
54.3.3. RestTemplate Metrics
54.3.4. Cache Metrics
54.3.5. DataSource Metrics
54.3.6. RabbitMQ Metrics
54.4. 註冊定製metrics
54.5. 自定義自己的metrics
54.5.1. Per-meter properties
54.6. Metrics終端
55. 審計
56. HTTP軌跡追蹤
56.1. 自定義HTTP軌跡追蹤
57. 過程監控
57.1. 擴充套件配置
57.2. 以程式設計的方式
58. Cloud Foundry支援
58.1 禁用擴充套件Cloud Foundry執行器支援
58.2. Cloud Foundry自籤認證(證書)
58.3. 自定義上下文路徑
59. 導讀
VI. 部署spring boot應用
60. 部署到雲上
60.1. Cloud Foundry
60.1.1. 繫結服務
60.2. Heroku
60.3. OpenShift
60.4. Amazon Web Services (AWS)
60.4.1. AWS Elastic Beanstalk
使用Tomcat平臺
使用Java SE平臺
60.4.2. 總結
60.5. Boxfuse and Amazon Web Services
60.6. Google雲
61. 安裝Spring Boot應用
61.1. 支援的作業系統
61.2. Unix/Linux服務
61.2.1. 作為一個init.d安裝(System V)
Securing an init.d服務
61.2.2. 作為一個系統服務安裝
61.2.3. 自定義啟動指令碼
自定義寫入時啟動指令碼
自定義執行時指令碼
61.3. Microsoft Windows服務
62. 導讀
VII. Spring Boot命令列(CLI)
63. 安裝命令列
64. 使用命令列
64.1. 使用命令列執行應用
64.1.1. Deduced “grab” Dependencies
64.1.2. Deduced “grab” Coordinates
64.1.3. 預設匯入Statements
64.1.4. Automatic Main Method
64.1.5. 自定義依賴管理
64.2. 具有多個原始檔的應用程式
64.3. 打包應用程式
64.4. 初始化一個新的專案
64.5. 使用嵌入式Shell
64.6. 給命令列增加擴充套件
65. 使用Groovy Beans DSL開發應用
66. 使用settings.xml配置命令列
67. 導讀
VIII. 建立工具外掛
68. Spring Boot Maven外掛
68.1. 加入Plugin
68.2. 打包可執行的Jar and War檔案
69. Spring Boot Gradle外掛
70. Spring Boot AntLib Module
70.1. Spring Boot Ant Tasks
70.1.1. spring-boot:exejar
70.1.2. 示例
70.2. spring-boot:findmainclass(尋找主類)
70.2.1. 示例
71. 支援其他的構建系統
71.1. 重新打包Archives
71.2. (Nested Libraries)庫巢狀
71.3. 尋找主類
71.4. 重新打包實現示例
72. 導讀
IX. ‘How-to’引導
73. Spring Boot應用
73.1. 建立自己的FailureAnalyzer
73.2. 自動故障檢測
73.3. 啟動之前自定義環境或ApplicationContext
73.4. 建立一個ApplicationContext層級(Adding a Parent or Root Context)
73.5. 建立一個Non-web Application
74. 屬性和配置
74.1. 建立時自動擴充套件屬性
74.1.1. 使用Maven自動擴充套件屬性
74.1.2. 使用Gradle自動擴充套件屬性
74.2. 外部化SpringApplication的配置
74.3. 改變應用外部屬性配置檔案的位置
74.4. 使用短命令列引數
74.5. 使用YAML作為外部屬性配置檔案
74.6. 設定Active Spring Profiles
74.7. 根據環境改變配置
74.8. 查詢外部屬性的內建選項
75. 嵌入式Web伺服器
75.1. 使用另一個Web伺服器
75.2. 禁用Web伺服器
75.3. 改變HTTP埠
75.4. 使用隨機的未佔用HTTP埠
75.5. 在執行環境中查詢HTTP埠
75.6. 啟用HTTP響應壓縮
75.7. 配置SSL
75.8. 配置HTTP/2
75.8.1. HTTP/2 with Undertow
75.8.2. HTTP/2 with Jetty
75.8.3. HTTP/2 with Tomcat
75.9. 配置Web伺服器
75.10. 給應用新增一個Servlet, Filter, 或Listener
75.10.1. 通過使用Spring Bean新增Servlet, Filter, 或 Listener
禁用Servlet或Filter的註冊
75.10.2. 通過類路徑掃描新增Servlets, Filters, 和 Listeners
75.11. 配置訪問日誌
75.12. 執行在前端代理伺服器之後
75.12.1. 自定義Tomcat的代理配置
75.13. 給Tomcat啟用多個聯結器
75.14. 使用Tomcat的LegacyCookieProcessor
75.15. Undertow啟用多監聽器(Listeners)
75.16. 使用@ServerEndpoint建立WebSocket終端
76. Spring MVC
76.1. 寫一個JSON REST服務
76.2. 寫一個XML REST服務
76.3. 自定義Jackson ObjectMapper
76.4. 自定義@ResponseBody Rendering
76.5. 處理Multipart File上傳
76.6. 關閉Spring MVC DispatcherServlet
76.7. 關閉預設的MVC配置
76.8. 自定義ViewResolvers
77. Jersey
77.1. Secure Jersey終端使用Spring Security
78. HTTP客戶端
78.1. 使用代理配置RestTemplate
79. 日誌
79.1. 為日誌配置Logback
79.1.1. 為只有檔案的輸出配置Logback
79.2.為日誌配置Log4j
79.2.1. 使用YAML或JSON配置Log4j 2
80. 資料訪問
80.1. 配置一個自定義資料來源
80.2. 配置兩個資料來源
80.3. 使用Spring資料倉庫
80.4. 從spring配置中分離出@Entity的定義
80.5. 配置JPA特性
80.6. 配置Hibernate的命名策略
80.7. 使用自定義EntityManagerFactory
80.8. 使用兩個EntityManagers
80.9. 使用傳統的persistence.xml檔案
80.10. 使用Spring資料JPA和Mongo倉庫
80.11. 暴露Spring資料倉庫作為REST終端
80.12. 配置一個JPA(java持久層API)使用的元件
80.13. 配置兩個資料來源的jOOQ(資料庫訪問框架)
81. 資料庫初始化
81.1. 使用JPA初始化資料庫
81.2. 使用Hibernate初始化資料庫
81.3. 初始化資料庫
81.4. 初始化Spring Batch資料庫
81.5. 使用一個高等級的資料庫遷移工具
81.5.1. 啟動時執行Flyway資料庫遷移
81.5.2. 啟動時執行Liquibase資料庫遷移
82. 訊息
82.1. 禁用Transacted JMS Session
83. 批量應用
83.1. 啟動時執行spring批量任務
84. 執行器(actuator)
84.1. 改變執行器終端的HTTP介面或地址
84.2. 自定義白標籤錯誤頁
84.3. Sanitize sensible values
85. 安全
85.1. 關閉Spring Boot安全配置
85.2. 改變UserDetailsService和新增賬號
85.3. 當執行在代理伺服器之後時啟用HTTPS
86. 熱部署
86.1. 過載靜態內容
86.2. 在不重啟容器的情況下過載模板
86.2.1. Thymeleaf模板
86.2.2. FreeMarker模板
86.2.3. Groovy模板
86.3. 快速啟動應用
86.4. 在不重啟容器的情況下過載java類
87. 建立
87.1. 產生Build資訊
87.2. 產生Git資訊
87.3. 自定義依賴版本
87.4. 使用maven建立一個可執行JAR
87.5. 使用一個Spring Boot應用作為依賴
87.6. 當可執行jar執行時提取具體的庫
87.7. 建立一個Non-executable JAR使用Exclusions
87.8. 遠端除錯一個使用maven啟動的Spring Boot應用
87.9. 不使用spring-boot-antlib從Ant建立一個可執行Archive
88. 傳統部署
88.1. 建立一個可部署的war包檔案
88.2. 將一個已有的應用轉化為Spring Boot
88.3. 在Weblogic上部署WAR
88.4. 使用Jedis代替Lettuce
X. 附件
A. 常見應用配置
B. 配置Metadata
B.1. Metadata格式
B.1.1. Group Attributes
B.1.2. Property Attributes
B.1.3. Hint Attributes
B.1.4. Repeated Metadata Items
B.2. Providing Manual Hints
B.2.1. Value Hint
B.2.2. Value Providers
Any
Class Reference
Handle As
Logger Name
Spring Bean Reference
Spring Profile Name
B.3. Generating Your Own Metadata by Using the Annotation Processor
B.3.1. Nested Properties
B.3.2. Adding Additional Metadata
C. 自動配置類
C.1. From the “spring-boot-autoconfigure” module
C.2. From the “spring-boot-actuator-autoconfigure” module
D. 測試自動配置註解
E. 可執行Jar格式
E.1. Nested JARs
E.1.1. The Executable Jar File Structure
E.1.2. The Executable War File Structure
E.2. Spring Boot’s “JarFile” Class
E.2.1. Compatibility with the Standard Java “JarFile”
E.3. Launching Executable Jars
E.3.1. Launcher Manifest
E.3.2. Exploded Archives
E.4. PropertiesLauncher Features
E.5. Executable Jar Restrictions
E.6. Alternative Single Jar Solutions
F. 依賴版本