javascript
.metadata是什么项目文件_《深入微服务》之 如何给老婆解释什么是微服务的基础框架SpringBoot?
前言
本章我們主要從以下幾個方面夯實我們的基礎:
什么是 Spring Boot
Spring Boot 簡介
Spring Boot 的亮點
我們知道,在 Spring Boot 中并沒有新增什么新的技術。Spring Boot 是服務于 Spring 框架的框架,它有著 4 個亮點我們應該知道。
1. 自動裝配
Spring Boot 會根據某些規則對所有配置的 Bean 進行初始化。可以減少了很多重復性的工作。比如使用 MongoDB 時,只需要在 pom.xml 中加入 MongoDB 的 Starter 包,然后配置 MongoDB 的連接信息,就可以直接使用 MongoTemplate 自動裝配來操作數據庫了。
2. 內嵌容器
Spring Boot 應用程序可以不用部署到外部容器中,比如 Tomcat。Spring Boot 應用程序可以直接通過 Maven 命令編譯成可執行的 jar 包,通過 java-jar 命令啟動即可,非常方便。
3. 應用監控
Spring Boot 中自帶監控功能 Actuator,可以實現對程序內部運行情況進行監控,比如 Bean 加載情況、環境變量、日志信息、線程信息等。當然也可以自定義跟業務相關的監控,通過 Actuator 的端點信息進行暴露。
4. Starter 包簡化框架集成難度
將 Bean 的自動裝配邏輯封裝在 Starter 包內部,同時也簡化了 Maven Jar 包的依賴,對框架的集成只需要加入一個 Starter 包的配置,降低了煩瑣配置的出錯幾率。
Spring Boot 的基本使用
創建 Spring Boot 項目
第一種方式:https://start.spring.io/。
第二種方式:通過 IDEA 創建 Spring Boot 項目。
1. 創建新項目:
2. 選擇構建方式和 JDK 版本:
3. 填寫項目相關信息:
4. 選擇依賴:
5. 點擊 NEXT,點擊 FINISH 后,我們得到項目結構如下:
第一步,我們打開 pom.xml 文件:
我們可以看到此時我們使用的 Spring Boot 的版本是 2.3.0.RELEASE。
第二步,我們需要對項目進行配置,我們添加一個 application.properties 文件,我們首先來配置一下 Tomcat 的端口號,當然端口號我們也可以不配置,默認為 8080。
application.properties
server.port=8888第三步,我們創建一個簡單的 Controller,老規矩,HelloWorld 走起。
最后一步,我們只需要運行 Spring Boot 的啟動類即可。
啟動類 SpringcloudstudyApplication:
啟動日志:
我們看到 端口號為:8888。
然后我們在地址欄中輸入 localhost:8888/hello:
至此,一個簡單的 Spring Boot 項目已經創建成功。
如何獲取 Spring Boot 項目配置文件中配置的屬性值
配置啟動屬性
我們在實際的項目中,經常會有多個配置文件,比如我們在本地開發的時候,我們需要連接本地數據庫。上傳到測試服務器上的時候,需要連接測試服務器的數據庫。部署到正式服務器上的時候,我們又會連接正式庫。
如果我們只有一個配置文件,那么我們每次發布的時候都要手動修改配置文件,實在是太麻煩了,而且很容易出錯。
如何解決呢?
在 Spring Boot 中,我們可以為本地,測試服,正式服,都定義一個單獨的配置文件,然后在 application.properties 中配置 spring.profiles.active 來確定我們應該使用哪一個配置文件。
我們來創建兩個配置文件 application-test.properties、application-dev.properties。
application-test.properties
server.port=8888application-dev.properties
server.port=6666application.properties
spring.profiles.active=dev此時我們來運行 Spring Boot 啟動類:
我們發現此時的端口號已經變成 6666,也就是說我們的配置生效了。
代碼中獲取配置的屬性值
那么我們如何在代碼中獲取到配置的屬性值呢?在 Spring Boot 中獲取配置屬性值的方式有三種:
@value 注解
@Value 是比較常見的注入方式,功能強大但一般可讀性較差。
我們創建一個 ConfigurationController,代碼如下:
在 ConfigurationController 中定義一個 port 字段,在 port 上使用 @Value 注入當前項目的端口值,冒號后面是在無值的情況下給的默認值,避免沒配置值的報錯問題。
首先,我們配置文件中配置 spring.name=ToBeTopJavaer 時,我們來啟動項目,運行 localhost:9999/config。
然后我們將配置文件中的 spring.name=ToBeTopJavaer 去掉,我們來啟動項目,運行 localhost:9999/config。
我們發現值已經變成了注解中的默認值了。
Environment
通過注入獲取 Environment 對象,然后再獲取定義在配置文件的屬性值。
代碼如下:
@ConfigurationProperties
@ConfigurationProperties 作用在類上,用于注入 Bean 屬性,然后再通過當前 Bean 獲取注入值。
首先我們定義一個 Person 類:
配置文件:
Controller:
然后我們來啟動項目,運行 localhost:9999/config:
我們看到,我們已經將 java.name 的值讀了出來。
如何自定義一個 Starter
Starter 可以說是 Spring Boot 的一個核心功能。
我們知道,當我們搭建一個項目的時候,我們需要依賴很多的 jar 包,即使使用的 Maven 我們也還是需要在 pom.xml 中寫入很多的 XML 來引入 jar 包。
Starter 的出現,改變了現狀,我們只要在 xml 中引入相關的 Starter 就行。但是并非說我們不需要引入別的 jar 包,只是我們通過了 Starter 自動配置我們需要的相關 jar 包,Starter 相當于個開關或是啟動器,當我們引入的時候,就相當于打開或者啟動了跟我們引入的 Starter 相關 jar 包的自動配置,而不需要我們在一個個的自己去寫引入。
那么如果我們想將我們自己寫的某個功能模塊變成 Starter,當我們在別的功能模塊需要引用的時候,只需要引入這個 Starter 就行,我們改如何操作呢?
首先我自己總結了下自定義個 Starter 的步驟,分為以下幾步:
下面我們開始動手實現我們自己的 Starter。
首先我們按照上述創建 Spring Boot 項目的步驟新建一個 MyStarter 工程,創建好后,工程結構如下:
Pom.xml
第二步,編寫一個實體類映射信息 OrderProperties 類,使用@ConfigurationProperties 來注入配置信息,然后定義一個 OrderService 類。
OrderProperties
第三步,編寫一個配置類,用于裝配 OrderService,將 OrderService 類托管到 IOC 容器中。
第四步,最重要的一步,開啟自動裝配功能。
最后一步,也是最重要的一步,新建 META-INF 文件夾,然后創建 spring.factories 文件,里面指定需要被裝配的類。
spring.factories
最后在 mystarter 工程中執行 mvn clean install 即可。
打開上面我們創建的 springcloudstudy 工程,在 pom 文件中引入剛剛自定義的 Starter,即可。
Spring Boot 監控
Spring Boot Admin 是一個開源的 Web 項目,用于管理和監控 Spring Boot 應用程序的運行狀態。在 Spring Boot 項目中可以通過集成 Spring Boot Admin Client 向 Spring Boot Admin Server 進行注冊,這樣我們就可以在 Spring Boot Admin Server 統一管理 Spring Boot 應用。
Spring Boot Admin 的主要功能點:
- 顯示健康狀況
- 顯示細節
- 顯示生成信息號
- 跟蹤并下載日志文件
- 查看 JVM 系統 & 環境屬性
- 查看 Spring Boot 配置屬性
- 支持 Spring Cloud 的 postable/env-&/ 刷新端點
- 簡單的日志級管理
- 與 jmx-bean 交互
- 查看線程轉儲
- 查看 HTTP 跟蹤
- 查看審計事件
- 查看 HTTP 端點
- 查看計劃任務
- 查看和刪除活動會話(使用 Spring 會話)
- 查看天橋/Liquibase 數據庫遷移
- 下載堆轉儲
- 關于狀態更改的通知(通過電子郵件、Sack、Hipchat)
- 狀態更改事件日志(非持久性)
下面我們就來搭建一下 Spring Boot Admin。
第一步,我們先建一個 Admin-Server 的項目,用來啟動 Spring-Boot-Admin 服務,我們需要在 pom.xml 文件中引用 spring-boot-admin-starter-server 的依賴。然后我們需要在啟動類上增加 @EnableAdminServer 的注解,最后啟用 Spring Boot Admin Server。
pom.xml
配置文件 application.yml:
啟動類 AdminServerApplication:
啟動成功后,我們登陸 localhost:9999:
此時我們發現應用數,實例數都為 0。
接下來我們創建一個 Admin-Client 項目,用來向 Spring-Boot-Admin 注冊服務或者實例,我們需要在 pom.xml 文件中引用 spring-boot-admin-starter-client 的依賴。然后我們需要在啟配置文件指定 Spring-Boot-Admin 的服務地址,最后啟用 Admin-Client。
pom.xml
配置文件 application.yml:
我們啟動成功后去刷新之前的界面:
現在我們的 Admin-Client 服務實例已經注冊到了 Admin-Server 上了。
我們點擊 Wallboard 進去查看詳細信息,界面如下:
里面的指標很多,就不一一介紹,希望同學們能在日后的工作中,慢慢的了解和學習。
總結
本文主要是帶領大家回顧一下日常工作中經常使用的 Spring Boot 常規知識點,從對 Spring Boot 的基本認識到基本使用,以及如何自定義一個自己的 Starter,最后還幫助大家搭建了一個 Spring Boot Admin 項目用來監控項目的基本健康情況。
學無止境,大家再接再厲,努力學習,早日成為大牛。
本文首發于公眾號【ToBeTopJavaer】,《深入SpringCloud微服務》系列正在激情連載中,大家一起努力!!!
深入SpringCloud微服務
原創不易,如果大家喜歡,賞個三連吧。和大家一起成為這世界上最優秀的人。
總結
以上是生活随笔為你收集整理的.metadata是什么项目文件_《深入微服务》之 如何给老婆解释什么是微服务的基础框架SpringBoot?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 慕了!网传腾讯《英雄联盟》项目组年终奖每
- 下一篇: RocketMQ这样做,压测后性能提高3