1. 程式人生 > >spring boot參考文件——目錄

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. 依賴版本