如何禁用一个方法在java @component类?



我使用java 8与spring boot
我有一个类

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
class Sample{
@Scheduled(cron = "00 00 00 * * *")
public void print(){
System.out.println("Hello World!");
}
}

这个方法将在每天00:00:000 AM被调用
现在我想暂时停止调用该方法。
注释方法的一种方法。
有更好的方法吗?
像junit中的@Disabled

为组件添加条件

@ConditionalOnProperty(name="schdularEnabled", value="true")

然后你可以使用application。使用环境变量来切换调度

您可以使用应用程序。在Spring Boot应用中获取特性标志。该文件通常定义了应用程序的配置,同时也可以作为功能切换的理想场所。基于一个标志,你可以启用/禁用该功能。

feature-flags:
is-xyz-method-enabled :true

方法内部的只是简单地检查这个属性。

@Value("${is-xyz-method-enabled}")
private boolean isEnabled;
@Scheduled()
public void xyz() {
if(isEnabled) {

}
}

我同意上面提到的方法,但也有另一种选择,如下面,

实现一个Spring"条件";接口,该接口使用返回类型布尔值覆盖matches方法(即,您可以使用布尔返回编写自己的自定义逻辑)。

那么,在@Component/@Configuration/@bean上使用@Conditional(yourconditionclassname.class)注释。这样,调度方法只在条件类返回true时执行。

希望这对您有帮助。

最新更新