帮助中心
Java 应用快速入门

| 阅读和实践需要约10分钟

快速入门中,我们将快速的实现一个Java程序新特性的发布与回滚(功能的开与关)。

在UI中创建一个 feature flag

登录 https://portal.featureflag.co 后台后,进入《开关管理》列表,点击按钮《+添加开关》。

在《新建开关》弹窗中输入 feature flag 的名称,并自动生成对应的 keyName (feature flag被调动时的识别key id)。

设置 feature flag 返回值

Feature flag 被建立后,会初始化两个返回值 truefalse ,并将默认返回值设置为 false,并且开关处于 的状态。

  • 开关在 状态时,返回《默认返回值》对应的配置返回值。初始化时为 false
  • 开关在 状态时,返回《如果开关关闭了,应返回》对应的返回值。初始化时为 false

当前,我们保留《默认返回值》的开关返回值设置为 false

在应用中集成并使用 feature flag

本快速入门教程所用SDK的版本为1.1.1点击查看GitHub的Release地址

关于完整的 SDK 介绍与使用,可以点击查看教程《Java Server SDK》

本教程用两个简单的Java method模拟如何使用feature flag发布与回滚新特性

public void newFunction(){
    System.out.println("Hello, new function");
}
    

public void oldFunction(){
    System.out.println("Oh, this is old function");
}
    

安装SDK

使用 Maven 安装

<repositories>
      <repository>
          <id>github-ffc-java-sdk-repo</id>
          <name>The Maven Repository on Github</name>
          <url>https://feature-flags-co.github.io/ffc-java-sdk/maven-repo</url>
      </repository>
  </repositories>

  <dependencies>
      <dependency>
          <groupId>co.featureflags</groupId>
          <artifactId>ffc-java-server-sdk</artifactId>
          <version>1.1.1</version>
      </dependency>
  </dependencies>

配置并获得SDK client实例

// 设置env secret, 使用默认config
FFCClient client = new FFCClientImp(envSecret);

其中,envSecret 可以在《组织机构》页面的《项目》标签下找到,如下图所示:

获取 feature flag 的值

首先创建一个目标用户

    FFCUser user = new FFCUser.Builder("key")
        .userName("name")
        .country("country")
        .email("email@xxx.com")
        .custom("age", "20")
        .build()

FFUser: 目标用户,一组可以用于feature flag评估的属性,通常是您程序中的用户信息。

这个对象包含4个内置属性(key, userName, emailcountry)。 其中keyuserName属性是必须的,key用于标识目标用户,userName属性方便查找目标用户。

其他的内置属性都是可选的,您还可自定义属性。比如定义目标用户的 age属性。

接下来根据目标用户获得feature flag的值,输入您刚才设置的feature flag对应的keyName,user以及默认值(当SDK发生错误时,默认的返回值),通过 FFCClient#isInitialized() 可以判断SDK是否成功初始化,boolVariation函数用于计算feature flag的值,返回值为boolean类型。

SDK 支持 String,Boolean,Number 类型的flag value,提供支持这些类型的variation的函数获得相应的flag value。

    // 初始化 SDK
    FFCClient client = new FFCClientImp(envSecret);
    
    // 确认 SDK已经成功初始化
    if(client.isInitialized()){
        // 获取flag value
        boolean res = client.boolVariation(keyName, user, false);
        if(res){
            newFunction()}
        else{
            oldFunction()}

    }

发布/回滚(开/关) feature

将上述代码提交到主分支发布以后,由于创建feature flag 的默认返回值为 false,运行程序会显示 oldFunction的输出结果 Oh, this is old function(模拟旧版功能)。

回到敏捷开关 Portal 的后台界面,进入自己创建的 feature flag 详情页面的 《目标条件》Tab,在《默认返回值》中将返回值设置为 true 后,点击按钮《保存设置》。

重新运行上述程序,会显示newFunction的输出结果Hello, new function(模拟新版功能)。我们成功的控制了功能模块的发布!

newFunction由于某些原因无法正常运行的时候,我们可以将《默认返回值》改回false或是直接关闭开关,这样程序就回滚到原来的版本!

在Java server side环境中,新feature发布/回滚并不需要重新部署应用,feature flag可以极大的提升开发的效率,节约成本!

最后更新于 2022/06/28
未能解决您的问题?请联系
评价此篇文档
有帮助
没帮助

请留下具体问题或建议

能够解决我的问题
我还有其他想说的
本篇目录