在現代軟體開發中,無需部署新程式碼即可控制即時應用程式中的功能的能力至關重要。這種功能稱為功能標誌管理,允許團隊即時開啟或關閉功能,從而實現持續交付、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(); } }
說明:
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")); } }
說明:
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中文網其他相關文章!