使用 API 呼叫和 UI 以及 Togglz 在 Spring Boot 應用程式中實作功能標誌管理
在現代軟體開發中,無需部署新程式碼即可控制即時應用程式中的功能的能力至關重要。這種功能稱為功能標誌管理,允許團隊即時開啟或關閉功能,從而實現持續交付、A/B 測試和金絲雀發布。它還透過控制新功能向用戶的展示,在降低與新部署相關的風險方面發揮著重要作用。
在本文中,我們將逐步介紹使用 Togglz 在 Spring Boot 應用程式中實現功能標誌管理的過程。我們將探索如何配置 Togglz、定義功能標誌以及控制它們在應用程式中的行為。
1。在 Spring Boot 應用程式中設定 Togglz
要開始使用 Togglz,您需要在 Spring Boot 專案中新增必要的依賴項。開啟 build.gradle 或 pom.xml 檔案並新增以下相依性:
implementation 'org.togglz:togglz-spring-boot-starter:3.1.2' implementation 'org.togglz:togglz-console:3.3.3'
這些依賴項包括核心 Togglz 功能和用於管理功能標誌的可選基於 Web 的控制台。
2。配置 Togglz
接下來,您需要在 Spring Boot 應用程式中設定 Togglz。這涉及設定 Togglz 用於管理功能標誌的 FeatureManager bean。
具體操作方法如下:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.togglz.core.manager.FeatureManager; import org.togglz.core.manager.FeatureManagerBuilder; import org.togglz.core.repository.jdbc.JdbcStateRepository; import org.togglz.core.user.NoOpUserProvider; import javax.sql.DataSource; @Configuration public class TogglzConfiguration { private final DataSource dataSource; @Autowired public TogglzConfiguration(DataSource dataSource) { this.dataSource = dataSource; } @Bean public FeatureManager featureManager() { return new FeatureManagerBuilder() .featureEnum(ProductCheckFeature.class) .stateRepository(new JdbcStateRepository(dataSource)) .userProvider(new NoOpUserProvider()) .build(); } }
說明:
- DataSource:注入DataSource供JdbcStateRepository使用。這允許 Togglz 在資料庫中保留功能標誌狀態。
- FeatureManager:FeatureManager 是使用FeatureManagerBuilder 建構的。我們指定定義功能的枚舉 (ProductCheckFeature.class),使用 JdbcStateRepository 來儲存功能狀態,並使用 NoOpUserProvider,因為我們在此範例中沒有將使用者與功能相關聯。
3。使用枚舉定義功能標誌
Togglz 使用枚舉來定義功能標誌。枚舉中的每個常數代表一個可以開啟或關閉的功能。這是一個例子:
import org.togglz.core.Feature; import org.togglz.core.annotation.Label; public enum ProductCheckFeature implements Feature { @Label("product-check") PRODUCT_CHECK, }
說明:
Label:@Label 註解為此功能提供了人類可讀的名稱。如果您決定使用此名稱,它將顯示在 Togglz 控制台中。
4。在您的應用程式中使用功能標誌
定義功能標誌並配置到位後,您就可以開始在應用程式中使用它們。以下是如何在執行某些程式碼之前檢查功能是否處於活動狀態的範例:
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.togglz.core.manager.FeatureManager; import reactor.core.publisher.Mono; import javax.servlet.http.HttpServletRequest; @RestController @RequestMapping("/api/products") public class ProductController { private final FeatureManager featureManager; private final ProductService productService; public ProductController(FeatureManager featureManager, ProductService productService) { this.featureManager = featureManager; this.productService = productService; } @GetMapping("/check") public Mono<ResponseEntity<?>> checkProduct(@RequestParam String isbn, HttpServletRequest httpServletRequest) { if (featureManager.isActive(ProductCheckFeature.PRODUCT_CHECK)) { return productService .productCheck(isbn, JwtUtils.getUserJwt(httpServletRequest), Boolean.FALSE) .flatMap(response -> Mono.just(ResponseEntity.ok(response))); } return Mono.just(ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Feature is disabled")); } }
說明:
- FeatureManager:FeatureManager 被注入到控制器中,用於檢查 PRODUCT_CHECK 功能是否處於活動狀態。
- 條件邏輯:如果該功能處於活動狀態,則執行產品檢查操作;否則,傳回「功能已停用」訊息。
5。透過 Togglz 控制台管理功能標誌
Togglz 控制台是一個強大的工具,可讓您透過 Web 介面管理功能標誌。若要啟用 Togglz 控制台,只需將下列屬性新增至您的 application.properties 或 application.yml 檔案:
implementation 'org.togglz:togglz-spring-boot-starter:3.1.2' implementation 'org.togglz:togglz-console:3.3.3'
您可以透過在網頁瀏覽器中導航至 /togglz-console 來存取控制台。控制台提供了一個易於使用的介面,用於打開或關閉功能、更改其策略以及查看其當前狀態。
結論
在 Spring Boot 應用程式中使用 Togglz 實作功能標誌管理是一個簡單的過程,可以提供對功能的強大控制。透過遵循本文概述的步驟,您可以輕鬆配置、定義和管理功能標誌,從而使您能夠自信、靈活地發布新功能。
無論您是逐步推出新功能、進行 A/B 測試,還是只是想最大程度地降低部署風險,Togglz 都能提供強大的解決方案,可以無縫整合到您的 Spring Boot 應用程式中。
快樂編碼! ?
以上是使用 API 呼叫和 UI 以及 Togglz 在 Spring Boot 應用程式中實作功能標誌管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用IntelliJIDEAUltimate版本啟動Spring...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...
