首页 >Java >java教程 >使用 API 调用和 UI 以及 Togglz 在 Spring Boot 应用程序中实现功能标志管理

使用 API 调用和 UI 以及 Togglz 在 Spring Boot 应用程序中实现功能标志管理

DDD
DDD原创
2024-12-30 19:53:12833浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn