FeatureToggle

2023-11-09

概述

为了控制功能开启与关闭,减少代码中的if-else繁琐的逻辑判断。主要通过spring的aop及java的注解实现。目前主要包含6个部分的代码,支持内存存储和部分策略。

源码git:稍后放源码

功能

  1. 单个开关的配置

  2. 开关组的配置,通过组的设置,可控制组内的开关的开启和关闭

  3. 开关使用策略(v1.0 支持工作日策略,可灵活配置其他时间;支持客户端和服务端策略)

  4. 支持方法内调用的public方法

使用场景

接口层面的方法

同一个接口,有两个实现类,每个类的实现类中方法实现不一样,可以通过开关控制系统使用哪个实现类实现的方法。

如接口A-Service,有add()的方法,两个实现类A-ServiceImpl-1和A-ServiceImpl-2分别实现的add()方法,可以增加feature("add",true/false)一个开关控制add()方法是使用A-ServiceImpl-1还是A-ServiceImpl-2的实现。当然会有一个默认的使用方法,假设默认使用A-ServiceImpl-1,当feature的状态设置为true会使用A-ServiceImpl-2,否则使用A-ServiceImpl-1。

非接口层面的方法(内部方法调用public方法)

在一个方法中需要使用其他非接口的方法,正常情况下会实现两个方法,通过if-else去选择,现在可以通过开关的控制自动选择一个方法。

如compose()方法,里面需要调用非接口方法add()1和add2()其中之一,可以在这两个方法中加上注解,然后配置两个feature("add1",true/false)和feature("add2",true/false)开关,并根据实际配置的开关,compose()方法中具体使用哪一个,如果都设置为true,结果会使用后面的方法,如果都是false,则两个方法都不使用。

实现

代码分为6个部分

feature核心类

  1. aop切面类

    • 包括接口级别的方法和非接口级别的方法(方法内调用的public方法)

  2. store存储类

  3. strategy策略类

  4. exception异常类

  5. util工具类

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FeatureToggle 的相关文章

随机推荐

  • 埃加洛尔虚拟服务器,致我终将逝去的二区:新一轮大服务器实装

    已实装wow大服务器配对列表 8月13日已完成 第一大区 鹰巢山 第十大区 达尔坎 第一大区 玛多兰 第一大区 银月 第二大区 黑暗之门 第十大区 血吼 第二大区 埃苏雷格 第一大区 凯尔萨斯 8月6日已完成 第二大区 格鲁尔 第一大区 斯
  • anaconda创建环境失败解决方案

    在深度学习中 我们常采用anaconda进行环境管理 这次出现了一个问题 当在 base 环境下输入命令 conda create n env name python x x 来创建一个环境名称为env name python版本为x x的
  • 如何通过OpenFace实现人脸识别框架

    本文中 笔者将介绍OpenFace中实现人脸识别的pipeline 这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架 很有学习价值 它的结构如下图所示 Input Image gt Detect 输入 原始的可能含有
  • 物联网毕设分享 - stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    文章目录 0 前言 1 简介 主要器件 实现效果 4 硬件设计 WIFI模块 OLED显示屏 相关原理图 硬件接线 5 软件说明 开发环境介绍 程序下载配置 设备初始化打印的信息 6 部分核心代码 7 最后 0 前言 这两年开始毕业设计和毕
  • 合理配置线程池核心线程数(IO密集型和CPU密集型)

    1 代码查看服务器的核心数 要合理配置线程数首先要知道公司服务器是几核的 代码查看服务器核数 System out println Runtime getRuntime availableProcessors 2 合理线程数配置之CPU密集
  • 使用Python实现单隐藏层神经网络的训练

    文章目录 1 实验内容 2 实验要求 3 实验原理 多层感知机 前向传播与后向传播 4 具体实现 数据加载与可视化 激活函数 单隐层神经网络 前向传播 后向传播 Mini batch梯度下降 预测与评估 分类结果可视化 5 实验结果 不同激
  • 表情符号(emoji)大全,只此一文便够了

    本文由 大侠 AhcaoZhu 原创 转载请声明 链接 https blog csdn net Ahcao2008 表情符号 emoji 大全 只此一文便够了 摘要 集中展示 笑脸和动物 人 庆贺和物品 食品和物 交通和地点 符号 符号表
  • QT编译警告 warning LNK4042: 对象被多次指定;已忽略多余的指定

    目录 场景复现 解决方案 场景复现 在一次移植QT工程时 发现qmake完成后报了下面一个警告 warning LNK4042 对象被多次指定 已忽略多余的指定 因为我只是移植工程 所以问题只能出在pro配置文件中 反复仔细观看发现在源文件
  • JS/TS格式化日期

    interface Date format this Date fmt string gt string Date prototype format function fmt const ss new Map M this getMonth
  • UE4C++泛型蓝图节点之K2Node蓝图节点

    UE4C 泛型蓝图节点之K2Node蓝图节点 前言 上篇我们讲解了以CustomThunk方式创建自定义泛型节点 今天在此我们讲解以K2Node实现自定义蓝图节点 首先 我们来比较这俩种方法 CustomThunk创建泛型节点时 代码简洁
  • 2014年第五届蓝桥杯Java程序设计本科B组决赛 供水设施(编程大题)

    2014年第五届蓝桥杯Java程序设计本科B组决赛个人题解汇总 https blog csdn net daixinliangwyx article details 89948727 第六题 标题 供水设施 交题测试链接 https www
  • IDEA配置Maven

    1 IDEA配置Maven环境 先在IDEA中配置Maven环境 选择 IDEA中 File gt Settings 搜索 maven 设置 IDEA 使用本地安装的 Maven 并修改配置文件路径 2 IDEA 创建 Maven项目 创建
  • sklearn实战之决策树

    sklearn实战系列 1 sklearn实战之决策树 2 sklearn实战之随机森林 3 sklearn实战之数据预处理与特征工程 4 sklearn实战之降维算法PCA与SVD 5 sklearn实战之逻辑回归与制作评分卡 6 skl
  • 《乌合之众》读书笔记

    作者 法 古斯塔夫 勒庞 译者 马晓佳 背景 法国大革命 导言 群体的时代 真正的历史变革 并不是那些以宏伟和暴力的场景令我们震惊的事情 能够令文化实现伟大复兴的唯一重要的变化 是对思想 观念和信仰产生影响的变化 令人印象深刻的历史事件只不
  • [CCPC] 2017秦皇岛 NumbersI

    题目描述 DreamGrid has a nonnegative integer n He would like to divide n into m nonnegative integers a1 a2 am and minimizes
  • LeetCode高频算法刷题记录4

    文章目录 1 二叉树的最近公共祖先 中等 1 1 题目描述 1 2 解题思路 1 3 代码实现 2 全排列 中等 2 1 题目描述 2 2 解题思路 2 3 代码实现 3 相交链表 简单 3 1 题目描述 3 2 解题思路 3 3 代码实现
  • Ubuntu18.04 下载与安装

    阿里云里面有很多镜像 https opsx alibaba com mirror Ubuntu各个版本的镜像下载地址 http mirrors melbourne co uk ubuntu releases 最新百度经验 Ubuntu19
  • 纯HTML+CSS网页设计——林允儿(可做网页课程作业)

    作品介绍 网页为作者一次课程作业 效果个人觉得还行 其中抛弃了导航栏的使用 主要每次都导航栏 写烦了 采用的是图谱的形式 主要也是因为最近在学 页面主要有6个 有三个是较重复的 所以主要页面是四个 具体的直接看图吧 作品展示 首页 首页背景
  • Python全面解读2018电影票房市场

    作者 法纳斯特 来源 法纳斯得 双11已经过去 双12即将来临 离2018年的结束也就2个月不到 还记得年初立下的flag吗 完成了多少 相信很多人和我一样 抱头痛哭 本次利用猫眼电影 实现对2018年的电影大数据进行分析 01 网页分析
  • FeatureToggle

    概述 为了控制功能开启与关闭 减少代码中的if else繁琐的逻辑判断 主要通过spring的aop及java的注解实现 目前主要包含6个部分的代码 支持内存存储和部分策略 源码git 稍后放源码 功能 单个开关的配置 开关组的配置 通过组