给你的项目添加一个灵活的“开关”

简介:   年后项目提测了两次,每次提测都是通宵达旦完成~第二次通宵的原因主要可以用一个字来形容:等。  项目中对接了一个代付通道,每次测试代付功能都是发起代付请求之后,需要等十几到二十几分钟才能返回代付结果,甚至期间通道偶尔会出现一些问题,更尴尬的是等了好长时间,返回的结果是代付失败(代付通道测试环境返回的代付结果都是随机的)。

 年后项目提测了两次,每次提测都是通宵达旦完成~第二次通宵的原因主要可以用一个字来形容:等。

 项目中对接了一个代付通道,每次测试代付功能都是发起代付请求之后,需要等十几到二十几分钟才能返回代付结果,甚至期间通道偶尔会出现一些问题,更尴尬的是等了好长时间,返回的结果是代付失败(代付通道测试环境返回的代付结果都是随机的)。


 这时候就找到一个办法就是在代付的位置加上一个开关,需要模拟代付成功的时候可以打开,走正常流程的时候就关闭,类似于Mock,可以自由控制我们测试自己的代码的时候不受第三方的影响。


这好办,我在代码里是这么干的:


public class PayServiceImpl implements PayService{
    protected final static boolean isOpenMockPaySuccess = true; // 模拟代付成功的开关
    /**
     * 代付请求
     * @return
     */
    public boolean payRequest(){
        if(isOpenMockPaySuccess){
            return true;//如果开关打开,模拟代付请求成功
        }else{
            //执行正常的代付请求逻辑
        }
    }
    /**
     * 代付结果查询
     * @return
     */
    public boolean payQuery(){
        if(isOpenMockPaySuccess){
            return true;//如果开关打开,模拟代付结果成功
        }else{
            //执行正常的代付结果查询逻辑
        }
    }
}


 这样就能实现上面说的效果了,无论代付通道需要多长的处理时间,有没有挂掉,我们都不需要关注,只需要专注于测试自己的逻辑。


 看到这里您可能以为这就OK了,但是这么做有一个致命的缺点,就是安全性。


 测试无误的代码都是随时可以上线的,假如上面的代码测试无误,那上线之后如果忘记关上开关,那是不是每一笔代付都默认成功啦(其实都没有提交)?


 所以为项目加一个开关的想法是好的,但是这个开关最好是关闭状态的,不影响正常逻辑,只有在开关需要打开的时候才去打开,并且可以动态关闭并且不修改代码。


 这时就可以使用读取自定义环境变量的形式来设置开关,比如:

protected final static boolean isOpenMockPaySuccess = Boolean.parseBoolean(System.getProperty("isOpenMockPaySuccess", "false")); // 模拟代付成功的开关


  默认是关闭(false),如果需要打开开关,则需要在jvm启动参数中添加isOpenMockPaySuccess参数,值为true:


-Xmx128 -Xms64 -Xmn32m -Xss16m -DisOpenMockPaySuccess=true


  这样,测试的时候可以在测试环境打开开关,生产环境也不会执行威胁生产环境安全的代码,保证程序在测试环境顺利测试,在生产环境安全运行。

相关文章
|
存储 传感器 JavaScript
NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态(4)
NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态(4)
231 0
|
物联网 芯片 开发者
Cc2530 GPIO 配置 | 学习笔记
快速学习 Cc2530 GPIO 配置
Cc2530 GPIO 配置 | 学习笔记
|
5天前
|
人工智能 自然语言处理 Shell
🦞 如何在 Moltbot 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
🦞 如何在 Moltbot 配置阿里云百炼 API
|
4天前
|
人工智能 JavaScript 应用服务中间件
零门槛部署本地AI助手:Windows系统Moltbot(Clawdbot)保姆级教程
Moltbot(原Clawdbot)是一款功能全面的智能体AI助手,不仅能通过聊天互动响应需求,还具备“动手”和“跑腿”能力——“手”可读写本地文件、执行代码、操控命令行,“脚”能联网搜索、访问网页并分析内容,“大脑”则可接入Qwen、OpenAI等云端API,或利用本地GPU运行模型。本教程专为Windows系统用户打造,从环境搭建到问题排查,详细拆解全流程,即使无技术基础也能顺利部署本地AI助理。
5208 12
|
10天前
|
人工智能 API 开发者
Claude Code 国内保姆级使用指南:实测 GLM-4.7 与 Claude Opus 4.5 全方案解
Claude Code是Anthropic推出的编程AI代理工具。2026年国内开发者可通过配置`ANTHROPIC_BASE_URL`实现本地化接入:①极速平替——用Qwen Code v0.5.0或GLM-4.7,毫秒响应,适合日常编码;②满血原版——经灵芽API中转调用Claude Opus 4.5,胜任复杂架构与深度推理。
6749 11
|
4天前
|
人工智能 JavaScript API
零门槛部署本地 AI 助手:Clawdbot/Meltbot 部署深度保姆级教程
Clawdbot(Moltbot)是一款智能体AI助手,具备“手”(读写文件、执行代码)、“脚”(联网搜索、分析网页)和“脑”(接入Qwen/OpenAI等API或本地GPU模型)。本指南详解Windows下从Node.js环境搭建、一键安装到Token配置的全流程,助你快速部署本地AI助理。(239字)
3248 19
|
2天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
2335 6
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
|
4天前
|
人工智能 安全 Shell
在 Moltbot (Clawdbot) 里配置调用阿里云百炼 API 完整教程
Moltbot(原Clawdbot)是一款开源AI个人助手,支持通过自然语言控制设备、处理自动化任务,兼容Qwen、Claude、GPT等主流大语言模型。若需在Moltbot中调用阿里云百炼提供的模型能力(如通义千问3系列),需完成API配置、环境变量设置、配置文件编辑等步骤。本文将严格遵循原教程逻辑,用通俗易懂的语言拆解完整流程,涵盖前置条件、安装部署、API获取、配置验证等核心环节,确保不改变原意且无营销表述。
2010 5
|
4天前
|
机器人 API 数据安全/隐私保护
只需3步,无影云电脑一键部署Moltbot(Clawdbot)
本指南详解Moltbot(Clawdbot)部署全流程:一、购买无影云电脑Moltbot专属套餐(含2000核时);二、下载客户端并配置百炼API Key、钉钉APP KEY及QQ通道;三、验证钉钉/群聊交互。支持多端,7×24运行可关闭休眠。
3352 7