首页 > 其他分享 >使用 FF4j 对业务进行开关操作

使用 FF4j 对业务进行开关操作

时间:2022-11-07 13:45:13浏览次数:86  
标签:FF4j void 开关 sayHello ff4j 操作 new public

FF4j 是一个 java 开关框架,可以轻松的实现功能切换,是 Feature Toggle 模式的实现,功能十分的强大,如果后期需要大量使用,则可以继续集成项目种的 web 控制台等组件。

op-ff4j-spring-boot-start 集成了该框架,使用 Redis 作为持久化工具。

测试方法:com.project.platform.ff4j.Ff4jTest

@SpringBootTest
@Slf4j
public class Ff4jTest {

    @Autowired
    private FF4j ff4j;

    @Test
    public void addTest() {
        // Work a bit with CRUD
        Feature f1 = new Feature("f1", true, "My firts feature", "Group1");
        ff4j.getFeatureStore().create(f1);

        PropertyString p1 = new PropertyString("p1", "v1");
        ff4j.getPropertiesStore().createProperty(p1);
    }

    @Test
    public void disableFeatureTest() {
        ff4j.check("f1");
        ff4j.disable("f1");
        boolean checkF1 = ff4j.check("f1");

        Assert.equals(false, checkF1);
    }

    @Test
    public void getPropertyTest() {
        String p1 = ff4j.getPropertiesStore().readProperty("p1").toString();
        log.info(p1);

        String p11 = (String) ff4j.getPropertiesStore().readProperty("p1").getValue();
        log.info(p11);
    }

    @Autowired
    @Qualifier("sayHelloImpl1")
    private SayHello sayHello;

    @Test
    public void aopTest() {
        // Add the Autoproxy located in package org.ff4j.aop in your Spring Context @see com.project.platform.PlatformApplication
        // Put @Flip annotation on an interface and create different implementations
        ff4j.check("sayHello");

        ff4j.disable("sayHello");
        sayHello.say(); // 你好

        ff4j.enable("sayHello");
        sayHello.say(); // hello
    }

}
@Flip(name = "sayHello", alterBean = "sayHelloImpl2")
public interface SayHello {
    void say();
}

@Component("sayHelloImpl1")
public class SayHelloImpl1 implements SayHello {
    @Override
    public void say() {
        System.out.println("你好");
    }
}

@Component("sayHelloImpl2")
public class SayHelloImpl2 implements SayHello {
    @Override
    public void say() {
        System.out.println("hello");
    }
}

配置使用 redis 进行存储以及需要注意的问题

@Configuration
public class FF4jConfig {

    /**
     * FF4j 是一个 java 开关框架,可以轻松的实现功能切换
     * FF4j 是 Feature Toggle 模式的实现
     *
     * 这里使用 redis 进行持久化存储
     * 如果要使用 aop,需要对 org.ff4j.aop 下的包进行 spring bean 扫描 @see com.project.platform.ff4j.Ff4jTest#aopTest()
     */
    @Bean
    public FF4j getFF4j() {
        RedisConnection connection = new RedisConnection();
        // new RedisConnection("localhost", 6379, "requiredPassword");
        // new RedisConnection(new JedisPool("localhost", 6379)); Defined your own pool with all capabilities of {@link redis.clients.jedis.JedisPool}

        FF4j ff4j = new FF4j();
        FeatureStoreRedis fStore = new FeatureStoreRedis(connection);
        ff4j.setFeatureStore(fStore);
        PropertyStoreRedis pStore = new PropertyStoreRedis(connection);
        ff4j.setPropertiesStore(pStore);
        ff4j.setEventRepository(new EventRepositoryRedis(connection));

        ff4j.setEnableAudit(true);
        ff4j.setAutocreate(true); // ff4j.check() 后自动创建
        return ff4j;
    }
}

标签:FF4j,void,开关,sayHello,ff4j,操作,new,public
From: https://www.cnblogs.com/manastudent/p/16865670.html

相关文章

  • 记录因Sharding Jdbc批量操作引发的一次fullGC
    周五晚上告警群突然收到了一条告警消息,点开一看,应用fullGC了。于是赶紧联系运维下载堆内存快照,进行分析。内存分析使用MemoryAnalyzer打开堆文件mat下载地址:htt......
  • java 常用的文件操作
    三种文件创建方操作:importorg.testng.annotations.Test;importjava.io.File;importjava.io.IOException;publicclassFileTest{publicstaticvoidmain......
  • 操作系统速成——4.文件系统
    四.文件系统 4.1文件、文件系统文件是以计算机硬盘为载体的存储在计算机上的信息集合文件系统就是操作系统中负责操作和管理文件的一整套设施,它实现文件的共享和保护,......
  • pdf禁用操作栏 -vue
    1.引入本地pdf文件放置public目录下2.本地data中定义变量路径可以直接用文件名(不需要加路径前缀,因为是在public文件下)3.在文件名后面加上"#toolbar=0"例如:   ......
  • Nginx操作:显示代理IP与配置多个静态文件
    今天使用Nginx,排查一个问题,负载过程,登陆应用提示“暂无权限”!需要查看负载真实IP信息就有了这篇记录。先上脚本:#add_headerbackendIP$upstream_add......
  • 简述Java对文件相关操作
    一、创建文件publicvoidcreate1(){StringfilePath="D:\\file1.txt";Filefile=newFile(filePath);try{file.createNewFile();Syste......
  • JAVA文件操作
    文件的创建(三种不同方法)1)方式一  2)方式二:  3)方式三:  文件信息的查询操作:  文件夹的创建:  四、Scanner与Ptintln1)基本键盘输入:  2)常见键......
  • Excel 将数据导出为文档文件,操作太繁琐,仅需鼠标双击即可
    大家好,在我们日常工作的时候,有时候需要将数据保存下来,其实你殊不知更多的时候我们是将Excel源数据的文件另存为Txt文档。但是呢,如果需要将很多的工作表中的数据分别保存为文......
  • 华为主题开发分享-在windows 11操作系统上识别不到P50等华为手机的解决方案
    在开发华为手机主题时,我们都是采用Themstudio进行实际测试,无穹,官方工具的“同步”功能实在是好用。一键就能将主题推到手机上进行测试,高效方便。但对于有的老款手机比如......
  • java文件夹的创建与文件信息的查询操作
    创建:第一种:importorg.testng.annotations.Test;importjava.io.File;importjava.io.IOException;publicclasscreateFile{publicstaticvoidmain(String[]args......