亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

測試環境比線上的代碼多了幾行轉換代碼怎么處理?

標簽:
Java

一、背景

今天一个朋友问了一个问题,测试环境比线上的代码多了几行代码怎么办?

是不是要新建分支?有没有更好的办法?

比如测试环境和线上环境用了同一套NoSQL存储,想隔离两个环境怎么办?

下面提供一个比较通用的方案,希望对大家有帮助。

二、方法

我们可以写一个环境工具类,然后再特定环境的代码上用这个工具类进行判断。

@Component
public class EnvironmentHelper implements EnvironmentAware {

    private Environment environment;

    private static final String PROD = "prod";
    private static final String PRE = "pre";
    private static final String QA = "qa";

    public boolean isProd() {
        return environment.acceptsProfiles(PROD);
    }

    public boolean isPre() {
        return environment.acceptsProfiles(PRE);
    }

    public boolean isQa() {
        return environment.acceptsProfiles(QA);
    }

    public String[] getActiveProfiles() {
        return environment.getActiveProfiles();
    }

    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
}

当然也可以直接注入

@Component
public class EnvironmentHelper{
 
    @Autowired
    private Environment environment;
 
    private static final String PROD = "prod";
    private static final String PRE = "pre";
    private static final String QA = "qa";
 
    public boolean isProd() {
        return environment.acceptsProfiles(PROD);
    }
 
    public boolean isPre() {
        return environment.acceptsProfiles(PRE);
    }
 
    public boolean isQa() {
        return environment.acceptsProfiles(QA);
    }
 
    public String[] getActiveProfiles() {
        return environment.getActiveProfiles();
    }
 
}

然后借助工具类来判断环境

@Service
public class DemoServiceImpl implements DemoService {
    @Resource
    private EnvironmentHelper environmentHelper;


    @Override
    public void test() {

        if (environmentHelper.isQa()) {
            // 测试环境专用代码
        }
        
        // 其他代码
    }
}

当然了也可以借助Apollo来配置,比如设置一个变量表示是否开启某个功能,线上的Apollo和测试服的配置不同。

如果预发和线上服公用同一套缓存框架,通过环境工具类获取环境的名称和key组合成一个新的key字符串,即可实现环境的隔离。

三、总结

方法不难,在开发中偶尔也会用到。

另外建议大家多看Spring的官方文档,很多场景都有专门的类提供了相关的功能,而不是遇到一个问题一个问题去查,去问。







點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
3858
獲贊與收藏
1468

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消