我对Spring还不熟悉,对它能做些什么还只是初步了解。
在这种情况下,我需要使用@Sched的
注释设置一个循环任务。速率被指定为对象中的成员字段,该对象被传递给封装表示任务的方法的类。
我使用了允许访问配置或环境的机制,例如@Scheduled(fixedRateString=“${some.property:default}”)
;这很有效。
我不知道如何做的是将对象中的值插入到@计划的
中。
例如:
class MyClass {
private MyObject myObj;
public MyClass(MyObject myObj) {
this.myObj = myObj;
}
@Scheduled(fixedRateString = "${myObj.rate:5000}")
private void someTask() {
...
}
}
当然,上面的代码不起作用,我只是举一个例子来说明我要做的事情。
如有任何建议,将不胜感激。
你可以这样做:
@Component
@ConfigurationProperties(prefix = "my.obj")
public class MyObject {
private String cronExecExpr = "*/5 * * * * *";
// getter and setter
}
class MyClass {
private MyObject myObj;
public MyClass(MyObject myObj) {
this.myObj = myObj;
}
@Scheduled(cron = "${my.obj.cron-exec-expr:*/5 * * * * *}")
private void someTask() {
...
}
}
是的,您可以使用@Scheduled
注释对SpEL表达式执行此操作(从Spring 4.3.x开始,可在@Scheduled
注释中找到)。下面是一个例子:
@Slf4j
@Configuration
@EnableScheduling
public class ExampleClass {
static class ScheduleCalculator {
public String calc() {
return "5000";
}
}
@Bean("scheduleCalculator")
public ScheduleCalculator createScheduleCalculator() {
return new ScheduleCalculator();
}
@Scheduled(fixedRateString = "#{scheduleCalculator.calc()}")
public void someTask() {
log.info("Hello world");
}
}
然而,仅仅因为你可以这样做并不意味着你一定要这样做。
如果您使用Spring任务调度器,并且您可以控制用于调度的线程池,而不是依赖共享执行器,所有@计划的
任务都集中在共享执行器中,那么您的代码可能更容易被那些将来必须维护它的人所理解。
不幸的是,Springbean创建过程不会读取这样的局部变量。
您可以使用Spring TaskScheduler类。
本质上,您只需要定义一个线程池,用于运行调度任务(作为bean)和taskScheduler。计划(可运行,新的CronTrigger(“****”)。这里有一个详细的例子:
https://www.baeldung.com/spring-task-scheduler
问题内容: 考虑以下Pytest: 该测试使用Pytest固定装置,其本身具有属性。在测试中迭代该属性,以便仅在每个in的断言均成立的情况下测试才通过。 但是,我实际上想做的是生成3个测试,其中2个应该通过,其中1个将失败。我试过了 但这导致 据我了解,在Pytest固定装置中,函数“成为”其返回值,但是在对参数进行参数化时,这似乎尚未发生。如何以所需的方式设置测试? 问题答案: 从 pytest
问题内容: 您如何访问“工作流程” Jenkins作业的“此构建已参数化”部分中的设置? 测试用例 创建一个工作流作业。 启用“此构建已参数化”。 添加具有默认值的STRING PARAMETER 。 将以下代码添加到: 运行工作。 结果 问题答案: 我认为使用Workflow插件时,变量可以直接使用,而不是通过env。尝试:
我有一个主类——模拟器——它使用另外两个类——生产者和评估者。生产者产生结果,而评估者评估这些结果。模拟器通过查询生产者并将结果传递给评估器来控制执行流程。 Producer和Evaluator的实际实现在运行时已知,在编译时我只知道它们的接口。下面我将粘贴接口、示例实现和模拟器类的内容。 这段代码应该编译并运行。无论选择哪个生产者实现,都应该得到相同的结果(0.82)。 编译器在以下几个地方警告
我有一个类似这样的pytest测试: 现在,作为重构的一部分,我移动了这一行: 放入它自己的夹具中(在conftest.py文件中),因为它在其他地方使用。但是,除了直接导入fixture函数外,是否有其他方法在测试中引用它?我知道funcargs通常是调用fixture的方式,但是在本文中,当我想要调用fixture时,我不在测试函数中。
我有以下endpoint 和下面的用注释 我希望,