如何在 spring 引导中创建调度程序 class 的多个实例?
How to create multiple instances of a scheduler class in spring boot?
我有一个 class 包含 @Scheduled
注释方法。
我想在 spring 引导应用程序中创建 class 的多个实例,以便我能够在指定时间段内 运行 多个作业。
我已经用谷歌搜索并尝试创建一个新对象,但计划没有成功。
注意:我将在运行时间为相应的实例传递要执行的内容。
您可以使用多种方法创建一个 class 来同时安排您的工作,做同样的工作..
@Component
public class Job {
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void job1() {
jobWork();
}
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void job2() {
jobWork();
}
private void jobWork() {
}
}
@Scheduled 是一个可重复的注释,因此您可以在同一方法中添加多个 @Scheduled
:
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void jobWork() {
jobWork();
}
@Repeatable(value=Schedules.class)
另见 Duplication on @Scheduled
Repeating Annotations as @Scheduled allow multiple annotations
这是答案,
我实现了 ApplicationContextAware
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
for (int i =0;i<4;i++) {
((ConfigurableApplicationContext) applicationContext).getBeanFactory()
.registerSingleton("New Instance " + i, new SchedularJob());
}
}
它将创建 4 个 SchedularJob 实例 class 和 4 个调度程序 运行 独立。
我有一个 class 包含 @Scheduled
注释方法。
我想在 spring 引导应用程序中创建 class 的多个实例,以便我能够在指定时间段内 运行 多个作业。
我已经用谷歌搜索并尝试创建一个新对象,但计划没有成功。
注意:我将在运行时间为相应的实例传递要执行的内容。
您可以使用多种方法创建一个 class 来同时安排您的工作,做同样的工作..
@Component
public class Job {
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void job1() {
jobWork();
}
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void job2() {
jobWork();
}
private void jobWork() {
}
}
@Scheduled 是一个可重复的注释,因此您可以在同一方法中添加多个 @Scheduled
:
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void jobWork() {
jobWork();
}
@Repeatable(value=Schedules.class)
另见 Duplication on @Scheduled
Repeating Annotations as @Scheduled allow multiple annotations
这是答案,
我实现了 ApplicationContextAware
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
for (int i =0;i<4;i++) {
((ConfigurableApplicationContext) applicationContext).getBeanFactory()
.registerSingleton("New Instance " + i, new SchedularJob());
}
}
它将创建 4 个 SchedularJob 实例 class 和 4 个调度程序 运行 独立。