### 50.2 數據源指標
Spring Boot會為應用中定義的每個支持的`DataSource`暴露以下指標:
- 活動連接數(`datasource.xxx.active`)
- 連接池當前使用情況(`datasource.xxx.usage`)
所有數據源指標共用`datasoure.`前綴,該前綴適用于每個數據源:
- 如果是主數據源(唯一可用的數據源或注解`@Primary`的數據源)前綴為`datasource.primary`。
- 如果數據源bean名稱以`DataSource`結尾,前綴就是bean的名稱去掉`DataSource`的部分(比如,`batchDataSource`的前綴是`datasource.batch`)。
- 其他情況使用bean的名稱作為前綴。
通過注冊自定義版本的`DataSourcePublicMetrics` bean,你可以覆蓋部分或全部的默認行為。Spring Boot默認提供支持所有數據源的元數據,如果喜歡的數據源恰好不被支持,你可以添加其他的`DataSourcePoolMetadataProvider` beans,具體參考`DataSourcePoolMetadataProvidersConfiguration`。
- 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.1.2. Gradle安裝
- 10.2. Spring Boot CLI安裝
- 10.2.1. 手動安裝
- 10.2.2. 使用SDKMAN進行安裝
- 10.2.3. 使用OSX Homebrew進行安裝
- 10.2.4. 使用MacPorts進行安裝
- 10.2.5. 命令行實現
- 10.2.6. Spring CLI示例快速入門
- 10.3. 從Spring Boot早期版本升級
- 11. 開發你的第一個Spring Boot應用
- 11.1. 創建POM
- 11.2. 添加classpath依賴
- 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. 繼承starter parent
- 13.2.2. 在不使用parent POM的情況下玩轉Spring Boot
- 13.2.3. 改變Java版本
- 13.2.4. 使用Spring Boot Maven插件
- 13.3. Gradle
- 13.4. Ant
- 13.5. Starters
- 14. 組織你的代碼
- 14.1. 使用"default"包
- 14.2. 放置應用的main類
- 15. 配置類
- 15.1. 導入其他配置類
- 15.2. 導入XML配置
- 16. 自動配置
- 16.1. 逐步替換自動配置
- 16.2. 禁用特定的自動配置
- 17. Spring Beans和依賴注入
- 18. 使用@SpringBootApplication注解
- 19. 運行應用程序
- 19.1. 從IDE中運行
- 19.2. 作為一個打包后的應用運行
- 19.3. 使用Maven插件運行
- 19.4. 使用Gradle插件運行
- 19.5. 熱交換
- 20. 開發者工具
- 20.1 默認屬性
- 20.2 自動重啟
- 20.2.1 排除資源
- 20.2.2 查看其他路徑
- 20.2.3 禁用重啟
- 20.2.4 使用觸發器文件
- 20.2.5 自定義restart類加載器
- 20.2.6 已知限制
- 20.3 LiveReload
- 20.4 全局設置
- 20.5 遠程應用
- 20.5.1 運行遠程客戶端應用
- 20.5.2 遠程更新
- 20.5.3 遠程調試通道
- 21. 打包用于生產的應用
- 22. 接下來閱讀什么
- IV. Spring Boot特性
- 23. SpringApplication
- 23.1 啟動失敗
- 23.2. 自定義Banner
- 23.3. 自定義SpringApplication
- 23.4. 流式構建API
- 23.5. Application事件和監聽器
- 23.6. Web環境
- 23.7 訪問應用參數
- 23.8. 使用ApplicationRunner或CommandLineRunner
- 23.9 Application退出
- 24.外化配置
- 24.1. 配置隨機值
- 24.2. 訪問命令行屬性
- 24.3. Application屬性文件
- 24.4. Profile-specific屬性
- 24.5. 屬性占位符
- 24.6. 使用YAML代替Properties
- 24.6.1. 加載YAML
- 24.6.2. 在Spring環境中使用YAML暴露屬性
- 24.6.3. Multi-profile YAML文檔
- 24.6.4. YAML缺點
- 24.6.5 合并YAML列表
- 24.7. 類型安全的配置屬性
- 24.7.1. 第三方配置
- 24.7.2. Relaxed綁定
- 24.7.3 屬性轉換
- 24.7.4. @ConfigurationProperties校驗
- 24.7.5 @ConfigurationProperties vs @Value
- 25. Profiles
- 25.1. 添加激活的profiles
- 25.2.以編程方式設置profiles
- 25.3. Profile-specific配置文件
- 26. 日志
- 26.1. 日志格式
- 26.2. 控制臺輸出
- 26.2.1 Color-coded輸出
- 26.3. 文件輸出
- 26.4. 日志級別
- 26.5. 自定義日志配置
- 26.6 Logback擴展
- 26.6.1 Profile-specific配置
- 26.6.2 Environment屬性
- 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 ConfigurableWebBindingInitializer
- 27.1.7 模板引擎
- 27.1.8 錯誤處理
- 27.1.9 Spring HATEOAS
- 27.1.10 CORS支持
- 27.2 JAX-RS和Jersey
- 27.3 內嵌servlet容器支持
- 27.3.1 Servlets, Filters和listeners
- 27.3.2 Servlet上下文初始化
- 27.3.3 EmbeddedWebApplicationContext
- 27.3.4 自定義內嵌servlet容器
- 27.3.5 JSP的限制
- 28. 安全
- 28.1 OAuth2
- 28.1.1 授權服務器
- 28.1.2 資源服務器
- 28.2 User Info中的Token類型
- 28.3 自定義User Info RestTemplate
- 28.3.1 客戶端
- 28.3.2 單點登陸
- 28.4 Actuator安全
- 29. 使用SQL數據庫
- 29.1. 配置DataSource
- 29.1.1. 對內嵌數據庫的支持
- 29.1.2. 連接生產環境數據庫
- 29.1.3. 連接JNDI數據庫
- 29.2. 使用JdbcTemplate
- 29.3. JPA和Spring Data
- 29.3.1. 實體類
- 29.3.2. Spring Data JPA倉庫
- 29.3.3. 創建和刪除JPA數據庫
- 29.4 使用H2的web控制臺
- 29.4.1 改變H2控制臺路徑
- 29.4.2 保護H2控制臺
- 29.5 使用jOOQ
- 29.5.1 代碼生成
- 29.5.2 使用DSLContext
- 29.5.3 自定義jOOQ
- 30. 使用NoSQL技術
- 30.1. Redis
- 30.1.1. 連接Redis
- 30.2. MongoDB
- 30.2.1. 連接MongoDB數據庫
- 30.2.2. MongoDBTemplate
- 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
- 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 Elasticseach倉庫
- 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倉庫
- 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 Guava
- 31.1.10 Simple
- 31.1.11 None
- 32. 消息
- 32.1. JMS
- 32.1.1 ActiveQ支持
- 32.1.2 Artemis支持
- 32.1.3 HornetQ支持
- 32.1.4 使用JNDI ConnectionFactory
- 32.1.5 發送消息
- 32.1.6 接收消息
- 32.2 AMQP
- 32.2.1 RabbitMQ支持
- 32.2.2 發送消息
- 32.2.3 接收消息
- 33. 調用REST服務
- 33.1 自定義RestTemplate
- 34. 發送郵件
- 35. 使用JTA處理分布式事務
- 35.1 使用Atomikos事務管理器
- 35.2 使用Bitronix事務管理器
- 35.3 使用Narayana事務管理器
- 35.4 使用J2EE管理的事務管理器
- 35.5 混合XA和non-XA的JMS連接
- 35.6 支持可替代的內嵌事務管理器
- 36. Hazelcast
- 37. Spring集成
- 38. Spring Session
- 39. 基于JMX的監控和管理
- 40. 測試
- 40.1 測試作用域依賴
- 40.2 測試Spring應用
- 40.3 測試Spring Boot應用
- 40.3.1 發現測試配置
- 40.3.2 排除測試配置
- 40.3.3 使用隨機端口
- 40.3.4 模擬和監視beans
- 40.3.5 自動配置測試
- 40.3.6 自動配置的JSON測試
- 40.3.7 自動配置的Spring MVC測試
- 40.3.8 自動配置的Data JPA測試
- 40.3.9 自動配置的REST客戶端
- 40.3.10 自動配置的Spring REST Docs測試
- 40.3.11 使用Spock測試Spring Boot應用
- 40.4 測試工具類
- 40.4.1 ConfigFileApplicationContextInitializer
- 40.4.2 EnvironmentTestUtils
- 40.4.3 OutputCapture
- 40.4.4 TestRestTemplate
- 41. WebSockets
- 42. Web Services
- 43. 創建自己的auto-configuration
- 43.1 理解自動配置的beans
- 43.2 定位自動配置候選者
- 43.3 條件注解
- 43.3.1 Class條件
- 43.3.2 Bean條件
- 43.3.3 Property條件
- 43.3.4 Resource條件
- 43.3.5 Web Application條件
- 43.3.6 SpEL表達式條件
- 43.4 創建自己的starter
- 43.4.1 命名
- 43.4.2 自動配置模塊
- 43.4.3 Starter模塊
- 44. 接下來閱讀什么
- V. Spring Boot執行器: Production-ready特性
- 45. 開啟production-ready特性
- 46. 端點
- 46.1 自定義端點
- 46.2 執行器MVC端點的超媒體支持
- 46.3 CORS支持
- 46.4 添加自定義端點
- 46.5 健康信息
- 46.6 安全與HealthIndicators
- 46.6.1 自動配置的HealthIndicators
- 46.6.2 編寫自定義HealthIndicators
- 46.7 應用信息
- 46.7.1 自動配置的InfoContributors
- 46.7.2 自定義應用info信息
- 46.7.3 Git提交信息
- 46.7.4 構建信息
- 46.7.5 編寫自定義的InfoContributors
- 47. 基于HTTP的監控和管理
- 47.1 保護敏感端點
- 47.2 自定義管理端點路徑
- 47.3 自定義管理服務器端口
- 47.4 配置管理相關的SSL
- 47.5 自定義管理服務器地址
- 47.6 禁用HTTP端點
- 47.7 HTTP health端點訪問限制
- 48. 基于JMX的監控和管理
- 48.1 自定義MBean名稱
- 48.2 禁用JMX端點
- 48.3 使用Jolokia通過HTTP實現JMX遠程管理
- 48.3.1 自定義Jolokia
- 48.3.2 禁用Jolokia
- 49. 使用遠程shell進行監控和管理
- 49.1 連接遠程shell
- 49.1.1 遠程shell證書
- 49.2 擴展遠程shell
- 49.2.1 遠程shell命令
- 49.2.2 遠程shell插件
- 50. 度量指標
- 50.1 系統指標
- 50.2 數據源指標
- 50.3 緩存指標
- 50.4 Tomcat session指標
- 50.5 記錄自己的指標
- 50.6 添加自己的公共指標
- 50.7 使用Java8的特性
- 50.8 指標寫入,導出和聚合
- 50.8.1 示例: 導出到Redis
- 50.8.2 示例: 導出到Open TSDB
- 50.8.3 示例: 導出到Statsd
- 50.8.4 示例: 導出到JMX
- 50.9 聚合多個來源的指標
- 50.10 Dropwizard指標
- 50.11 消息渠道集成
- 51. 審計
- 52. 追蹤
- 52.1 自定義追蹤
- 53. 進程監控
- 53.1 擴展配置
- 53.2 以編程方式
- 54. 接下來閱讀什么
- VI. 部署到云端
- 55. 部署到云端
- 55.1 Cloud Foundry
- 55.1.1 綁定服務
- 55.2 Heroku
- 55.3 Openshift
- 55.4 Boxfuse和Amazon Web Services
- 55.5 Google App Engine
- 56. 安裝Spring Boot應用
- 56.1 Unix/Linux服務
- 56.1.1 安裝為init.d服務(System V)
- 56.1.2 安裝為Systemd服務
- 56.1.3 自定義啟動腳本
- 56.2 Microsoft Windows服務
- 57. 接下來閱讀什么
- VII. Spring Boot CLI
- 58. 安裝CLI
- 59. 使用CLI
- 59.1 使用CLI運行應用
- 59.1.1 推斷"grab"依賴
- 59.1.2 推斷"grab"坐標
- 59.1.3 默認import語句
- 59.1.4 自動創建main方法
- 59.1.5 自定義依賴管理
- 59.2 測試你的代碼
- 59.3 多源文件應用
- 59.4 應用打包
- 59.5 初始化新工程
- 59.6 使用內嵌shell
- 59.7 為CLI添加擴展
- 60. 使用Groovy beans DSL開發應用
- 61. 使用settings.xml配置CLI
- 62. 接下來閱讀什么
- VIII. 構建工具插件
- 63. Spring Boot Maven插件
- 63.1 包含該插件
- 63.2 打包可執行jar和war文件
- 64. Spring Boot Gradle插件
- 64.1 包含該插件
- 64.2 Gradle依賴管理
- 64.3 打包可執行jar和war文件
- 64.4 就地(in-place)運行項目
- 64.5 Spring Boot插件配置
- 64.6 Repackage配置
- 64.7 使用Gradle自定義配置進行Repackage
- 64.7.1 配置選項
- 64.7.2 可用的layouts
- 64.8 理解Gradle插件是如何工作的
- 64.9 使用Gradle將artifacts發布到Maven倉庫
- 64.9.1 自定義Gradle,用于產生一個繼承依賴管理的pom
- 64.9.2 自定義Gradle,用于產生一個導入依賴管理的pom
- 65. Spring Boot AntLib模塊
- 65.1. Spring Boot Ant任務
- 65.1.2. 示例
- 65.2.1. 示例
- 66.1. 重新打包存檔
- 66.2. 內嵌庫
- 66.3. 查找main類
- 66.4. repackage實現示例
- 67. 接下來閱讀什么
- IX. How-to指南
- 68. Spring Boot應用
- 68.1 創建自己的FailureAnalyzer
- 68.2 解決自動配置問題
- 68.3 啟動前自定義Environment或ApplicationContext
- 68.4 構建ApplicationContext層次結構
- 68.5 創建no-web應用
- 69. 屬性&配置
- 69.1. 運行時暴露屬性
- 69.1.1. 使用Maven自動暴露屬性
- 69.1.2. 使用Gradle自動暴露屬性
- 69.2. 外部化SpringApplication配置
- 69.3 改變應用程序外部配置文件的位置
- 69.4 使用'short'命令行參數
- 69.5 使用YAML配置外部屬性
- 69.6 設置生效的Spring profiles
- 69.7 根據環境改變配置
- 69.8 發現外部屬性的內置選項
- 70. 內嵌servlet容器
- 70.1 為應用添加Servlet,Filter或Listener
- 70.1.1 使用Spring bean添加Servlet, Filter或Listener
- 70.1.2 使用classpath掃描添加Servlets, Filters和Listeners
- 70.2 改變HTTP端口
- 70.3 使用隨機未分配的HTTP端口
- 70.4 發現運行時的HTTP端口
- 70.5 配置SSL
- 70.6 配置訪問日志
- 70.7 在前端代理服務器后使用
- 70.7.1 自定義Tomcat代理配置
- 70.8 配置Tomcat
- 70.9 啟用Tomcat的多連接器
- 70.10 使用Tomcat的LegacyCookieProcessor
- 70.11 使用Jetty替代Tomcat
- 70.12 配置Jetty
- 70.13 使用Undertow替代Tomcat
- 70.14 配置Undertow
- 70.15 啟用Undertow的多監聽器
- 70.16 使用Tomcat 7.x或8.0
- 70.16.1 通過Maven使用Tomcat 7.x或8.0
- 70.16.2 通過Gradle使用Tomcat7.x或8.0
- 70.17 使用Jetty9.2
- 70.17.1 通過Maven使用Jetty9.2
- 70.17.2 通過Gradle使用Jetty 9.2
- 70.18 使用Jetty 8
- 70.18.1 通過Maven使用Jetty8
- 70.18.2 通過Gradle使用Jetty8
- 70.19 使用@ServerEndpoint創建WebSocket端點
- 71. Spring MVC
- 71.1 編寫JSON REST服務
- 71.2 編寫XML REST服務
- 71.3 自定義Jackson ObjectMapper
- 71.4 自定義@ResponseBody渲染
- 71.5 處理Multipart文件上傳
- 71.6 關閉Spring MVC DispatcherServlet
- 71.7 關閉默認的MVC配置
- 71.8 自定義ViewResolvers
- 71.9 Velocity
- 71.10 使用Thymeleaf 3
- 73. 日志
- 73.1 配置Logback
- 73.1.1 配置logback只輸出到文件
- 73.2 配置Log4j
- 73.2.1 使用YAML或JSON配置Log4j2
- 74. 數據訪問
- 74.1 配置數據源
- 74.2 配置兩個數據源
- 74.3 使用Spring Data倉庫
- 74.4 從Spring配置分離@Entity定義
- 74.5 配置JPA屬性
- 74.6 使用自定義EntityManagerFactory
- 74.7 使用兩個EntityManagers
- 74.8 使用普通的persistence.xml
- 74.9 使用Spring Data JPA和Mongo倉庫
- 74.10 將Spring Data倉庫暴露為REST端點
- 74.11 配置JPA使用的組件
- 75. 數據庫初始化
- 75.1 使用JPA初始化數據庫
- 75.2 使用Hibernate初始化數據庫
- 75.3 使用Spring JDBC初始化數據庫
- 75.4 初始化Spring Batch數據庫
- 75.5 使用高級數據遷移工具
- 75.5.1 啟動時執行Flyway數據庫遷移
- 75.5.2 啟動時執行Liquibase數據庫遷移
- 76. 批處理應用
- 76.1 在啟動時執行Spring Batch作業
- 77. 執行器
- 77.1 改變HTTP端口或執行器端點的地址
- 77.2 自定義WhiteLabel錯誤頁面
- 77.3 Actuator和Jersey
- 78. 安全
- 78.1 關閉Spring Boot安全配置
- 78.2 改變AuthenticationManager并添加用戶賬號
- 78.3 當前端使用代理服務器時啟用HTTPS
- 79. 熱交換
- 79.1 重新加載靜態內容
- 79.2. 在不重啟容器的情況下重新加載模板
- 79.2.1 Thymeleaf模板
- 79.2.2 FreeMarker模板
- 79.2.3 Groovy模板
- 79.2.4 Velocity模板
- 79.3 應用快速重啟
- 79.4 在不重啟容器的情況下重新加載Java類
- 79.4.1 使用Maven配置Spring Loaded
- 79.4.2 使用Gradle和IntelliJ IDEA配置Spring Loaded
- 80. 構建
- 80.1 生成構建信息
- 80.2 生成Git信息
- 80.3 自定義依賴版本
- 80.4 使用Maven創建可執行JAR
- 80.5 將Spring Boot應用作為依賴
- 80.6 在可執行jar運行時提取特定的版本
- 80.7 使用排除創建不可執行的JAR
- 80.8 遠程調試使用Maven啟動的Spring Boot項目
- 80.9 遠程調試使用Gradle啟動的Spring Boot項目
- 80.10 使用Ant構建可執行存檔
- 80.11 如何使用Java6
- 80.11.1 內嵌Servlet容器兼容性
- 80.11.2 Jackson
- 80.11.3 JTA API兼容性
- 81. 傳統部署
- 81.1 創建可部署的war文件
- 81.2 為老的servlet容器創建可部署的war文件
- 81.3 將現有的應用轉換為Spring Boot
- 81.4 部署WAR到Weblogic
- 81.5 部署WAR到老的(Servlet2.5)容器
- X.附錄
- 附錄A. 常見應用屬性
- 附錄B. 配置元數據
- 附錄B.1. 元數據格式
- 附錄B.1.1. Group屬性
- 附錄B.1.2. Property屬性
- 附錄B.1.3. 可重復的元數據節點
- 附錄B.2. 使用注解處理器產生自己的元數據
- 附錄 B.2.1. 內嵌屬性
- 附錄 B.2.2. 添加其他的元數據
- 附錄C. 自動配置類
- 附錄 C.1. 來自spring-boot-autoconfigure模塊
- 附錄C.2. 來自spring-boot-actuator模塊
- 附錄D. 可執行jar格式
- 附錄D.1. 內嵌JARs
- 附錄D.1.1. 可執行jar文件結構
- 附錄D.1.2. 可執行war文件結構
- 附錄D.2. Spring Boot的"JarFile"類
- 附錄D.2.1. 對標準Java "JarFile"的兼容性
- 附錄D.3. 啟動可執行jars
- 附錄D.3.1 Launcher manifest
- 附錄D.3.2. 暴露的存檔
- 附錄D.4. PropertiesLauncher特性
- 附錄D.5. 可執行jar的限制
- 附錄D.5.1. Zip實體壓縮
- 附錄D.5.2. 系統ClassLoader
- 附錄D.6. 可替代的單一jar解決方案
- 附錄E. 依賴版本