我的ScheduledExecutorService实现有问题。在我的任务的run()方法中,我不能注入bean。
public class MyTask implements Runnable{
@Autowired
private DataExporter de;
@Override
public void run(){
de.export();
}
}
运行我的任务对象de时为空。我知道春天有一些任务和时间表实施,但有没有办法解决这个问题?
答案 0 :(得分:0)
如果我理解正确,您正在创建MyTask
这样的实例
MyTask myTask = new MyTask();
这个问题是Spring不知道已经创建了另一个MyTask
实例。我建议在应用程序上下文中创建一个原型bean:
<bean id="myTaskTemplate" class="mypackage.MyTask" scope="prototype" />
将以下抽象方法添加到当前正在创建MyTask
实例
protected abstract createMyTask();
并将以下内容添加到bean定义
<bean id="myTaskCreatingBean" class="...">
<lookup-method name="createMyTask" bean="myTaskTemplate"/>
</bean>
然后你可以替换
MyTask myTask = new MyTask();
与
MyTask myTask = createMyTask();
并且myTask
bean将由spring创建并且依赖项已正确自动装配。