我需要在会话创建时安排一个作业。因此,我创建了我的HttpSessionListener:
@Component
public class WebSessionListener implements HttpSessionListener {
//@Autowired
@Qualifier(value = "taskScheduler")
private ThreadPoolTaskScheduler taskScheduler;
@Autowired
private PanierService panierService;
//Notification that a session was created.
@Override
public void sessionCreated(HttpSessionEvent httpSessionCreatedEvent) {
Runnable viderPanier20mnJob = PanierJobs.getViderPanier20mnJob(httpSessionCreatedEvent.getSession());
taskScheduler.schedule(viderPanier20mnJob, PanierJobs.getNextDateTime());
System.out.println("Session Created Called! -----------------------");
}
但是我的一个大问题是,我的TaskScheduler bean没有被注入(NoSuchBeanDefinition或有时会弹出NullPointerException)。
这是我的TaskScheduler(取自一个它可以正常工作的示例):
@Configuration
@EnableScheduling
@EnableAsync
public class JobSchedulingConfig{
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
return executor;
}
@Bean
public ThreadPoolTaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
return scheduler;
}
}
我正在使用Spring Boot,没有配置文件。它是基于Java的配置(如第二个代码片段所示)。 @Autowired和@Qualifier不能用于TaskScheduler(但可用于PanierService)。
@Autowired
对于taskScheduler
不起作用吗?它是否被自动扫描了?请分享 Spring 配置文件。 - Braj@Autowired
,删除@Qualifier
。 - Mithun