我第一次使用Spring @Scheduled注释。我已经在配置中启用了调度,并且调度方法非常有效。
我的问题是,Spring没有使用@Scheduled带注释的方法将所需的bean注入我的bean。我实际得到的是一个LockService代理对象,在这种情况下没用。
有没有办法将Spring bean注入带有计划任务的bean?
我在@Autowired注释下尝试使用@Lazy注释,但结果是一样的。从注入的ApplicationContext获取bean也没有结果。
这是我的bean没有注入依赖项:
@Component
public class LockScheduler extends AbstractScheduler {
private final LockService lockService;
@Autowired
public LockScheduler(LockService lockService) {
this.lockService = lockService;
}
@Scheduled(fixedDelay = 15000)
public void removeAbandonedLocks() {
if (!isSchedulingEnabled()) {
return;
}
LOG.info("Execute abandoned lock remove");
lockService.removeAbandonedLocks();
}
}
我想这与Aspects有关,我无法通过计划任务从bean到达ApplicationContext。
更新:
我从调试模式发布了屏幕。而不是LockService对象我获得了对LockRepository的null引用的代理,因此breakpointed方法execute无效。