ホームページ Java &#&チュートリアル Togglz による API 呼び出しと UI を使用した Spring Boot アプリケーションへの機能フラグ管理の実装

Togglz による API 呼び出しと UI を使用した Spring Boot アプリケーションへの機能フラグ管理の実装

Dec 30, 2024 pm 07:53 PM

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'
ログイン後にコピー
ログイン後にコピー

Web ブラウザで /togglz-console に移動すると、コンソールにアクセスできます。コンソールには、機能のオン/オフ、戦略の変更、現在の状態の表示のための使いやすいインターフェイスが用意されています。

結論

Spring Boot アプリケーションに Togglz を使用して機能フラグ管理を実装することは、機能に対する強力な制御を提供する簡単なプロセスです。この記事で説明する手順に従うことで、機能フラグを簡単に構成、定義、管理できるため、自信と柔軟性を持って新機能をリリースできます。

新機能を段階的にロールアウトする場合でも、A/B テストを実施する場合でも、単に展開リスクを最小限に抑えたい場合でも、Togglz は Spring Boot アプリケーションにシームレスに統合する堅牢なソリューションを提供します。

コーディングを楽しんでください! ?

以上がTogglz による API 呼び出しと UI を使用した Spring Boot アプリケーションへの機能フラグ管理の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)