SpringBoot4大核心組件
starter, autoconfigure, CLI 以及actuator
Starter
-
官方提供的 starter 命名:spring-boot-starter-xxx
-
非官方的 starter 命名:xxx-spring-boot-starter
其中 xxx 就是我們想要依賴的組件或者 jar 包。引入之后通過簡單的約定配置就可以正常使用。
-
Starter 幫我們封裝好了所有需要的依賴,避免我們自己添加導致的一些Jar包沖突或者缺少包的情況;
-
Starter 幫我們自動注入了需要的 Bean 實例到 Spring 容器中,不需要我們手動配置(這個可以說是 starter 干的,但實際上並不是);
所以: starter 包的內容就是 pom 文件,就是一個依賴傳遞包。
Spring Boot Autoconfigure
autoconfigure 在我們的開發中並不會被感知,因為它是存在與我們的 starter 中的。所以我們的每個 starter 都是依賴 autoconfigure 的
autoconfigure 內容是配置 Bean 實例到 Spring 容器的實際代碼實現包,然后提供給 starter 依賴。所以說配置 Bean 實例到Spring容器中實際是 autoconfigure 做的,因為是 starter 依賴它,所以也可以說是 starter 干的。
所以:autocinfigure 是 starter 體現出來的能力的代碼實現
Spring Boot CLI
Spring Boot CLI 是一個命令行使用 Spring Boot 的客戶端工具;主要功能如下:
- 運行 groovy 腳本
- 打包 groovy 文件到 jar
- 初始化 Spring Boot 項目
- 其他
詳見官網
Spring Boot actuator
actuator 是 Spring Boot 的監控插件,本身提供了很多接口可以獲取當前項目的各項運行狀態指標。
使用步驟:
-
添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
-
配置需要開啟監控的端點
management: endpoint: health: ## 開啟健康監控端點 enabled: true beans: ## 開啟Bean實例監控端點 enabled: true
重要端點:
-
health端點:端點會聚合你程序的健康指標,來檢查程序的健康情況,端點有很多自動配置的健康指示器:如 redis、rabbitmq、db 等組件。
-
metrics端點:用來返回當前應用的各類重要度量指標,比如:內存信息、線程信息、垃圾回收信息、tomcat、數據庫連接池等。
-
loggers端點:暴露了我們程序內部配置的所有 logger 的信息,能夠動態修改你的日志等級;只需要發起一個 URL 為
http://localhost:8080/actuator/loggers/root
的POST
請求,POST 報文如下:{ "configuredLevel": "DEBUG" }
-
info端點:可以用來展示你程序的信息。我理解過來就是一些程序的基礎信息。並且你可以按照自己的需求在配置文件
application.properties
中個性化配置(默認情況下,該端點只會返回一個空的 json 內容。) -
beans端點:會返回 Spring 容器中所有 bean 的別名、類型、是否單例、依賴等信息
-
heapdump端點:會自動生成一個 Jvm 的堆文件 heapdump。我們可以使用 JDK 自帶的 Jvm 監控工具 VisualVM 打開此文件查看內存快照。
-
threaddump端點:主要展示了線程名、線程 ID、線程的狀態、是否等待鎖資源、線程堆棧等信息。方便我們在日常定位問題的時候查看線程的情況。
-
shutdown端點:屬於操作控制類端點,可以優雅關閉 Spring Boot 應用。要使用這個功能首先需要在配置文件中開啟:
management.endpoint.shutdown.enabled=true
-
-
啟動服務並驗證
-
查看各個監控信息
瀏覽器訪問監控地址:http://localhost:9500/actuator