首頁 > Java > java教程 > 使用 API 呼叫和 UI 以及 Togglz 在 Spring Boot 應用程式中實作功能標誌管理

使用 API 呼叫和 UI 以及 Togglz 在 Spring Boot 應用程式中實作功能標誌管理

DDD
發布: 2024-12-30 19:53:12
原創
825 人瀏覽過

Implementing Feature Flag Management in Your Spring Boot Application Using API Calls and UI with Togglz

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

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板