Danni、Johny和Java功能标志问题
作者:互联网
解决方案
对于解决方案,我们有几个可用的库,我选择了FF4J(java的Feature Flag)。以下是带有解释的代码片段。
1.前往Spring Intializer并创建一个初学者弹簧引导项目。
我不在乎你使用的是哪个版本,但如果你使用的是Spring Boot 3.x,你必须使用Java 17或更高版本。Gradle还是Maven?我不在乎。我和Gradle一起去了。
2.将以下行注入您的gradle依赖项。
implementation 'org.ff4j:ff4j-core:2.0.0'
。
如果您使用的是maven,请转到Maven中央存储库并找到您自己的依赖项,
3.创建一个Java配置,如FF4JConfig或任何你想要的f*ck。
在哪里创建?这块狗屎不适合你。
4.添加以下行。
@Configuration //This piece of shit will tell spring boot that this is a configuration class
public class FF4jConfig {
//Feature Name Definition
public static final String PAPA_FEATURE = "PAPA_FEATURE";
/*
* FF4J Configuration
* Create one bean of type FF4J. Why? Because concept of overriding is dying
* Create of instance of FF4j. Obviously to use it further
* Register your Feature
* Enable or disable according to you
* You are done, Thank me later (Code Below ⬇️)_
*/
@Bean
public FF4j ff4j(){
FF4j ff4j = new FF4j();
Feature papaFeature = new Feature(PAPA_FEATURE);
papaFeature.disable(); //Default we will disable this feature later we will be enable
ff4j.createFeature(papaFeature);
return ff4j;
}
}
5.定义您的API端点,以便Ramu Kaka和Johny进行通信。
@GetMapping(path = "/should-we-party")
public String shouldWeParty(){
if(ff4j.check(FF4jConfig.PAPA_FEATURE))
return "Yeah Johny Lets Go for party";
else
return "Sorry Johny, Papa is at Home";
}
/*
* End-point will change the status of the feature
* In our case it will notify johny about status of papa
*/
@PostMapping(path = "/papa-at-hospital/{isAtHospital}")
public String papaAtHospital(@PathVariable boolean isAtHospital){
if(isAtHospital){
ff4j.enable(FF4jConfig.PAPA_FEATURE);
return ("Message deliverd to danny: PAPA IS AT HOSPITAL, GO PARTY");
}
else {
ff4j.disable(FF4jConfig.PAPA_FEATURE);
return ("Message deliverd to danny: PAPA LEFT HOSPITAL, COME BACK");
}
}
在使用之前,不要忘记自动连接FF4j进行实例化
@Autowired
FF4j ff4j;
结果
以下是Johny约Danny出去的终点。
以下是Ramu Kaka约Danny出去的终点。
一旦Ramu Kaka通知DannyBig-B住院了,Johny将在给Danny打电话时得到以下回复。
收到这个回复后,Johny和Danny去参加派对了。故事的其余部分从浏览器历史记录中清除
在Github/0x4E43获取完整代码