Java ScheduledExecutorService+beans
我对ScheduledExecutorService的实现有问题。在我的任务的run方法中,我不能注入beanJava ScheduledExecutorService+beans,java,spring,Java,Spring,我对ScheduledExecutorService的实现有问题。在我的任务的run方法中,我不能注入bean public class MyTask implements Runnable{ @Autowired private DataExporter de; @Override public void run(){ de.export(); } } 运行任务时,对象de为空。我知道spring有一些任务和计划的实现,但是有什
public class MyTask implements Runnable{
@Autowired
private DataExporter de;
@Override
public void run(){
de.export();
}
}
运行任务时,对象de为空。我知道spring有一些任务和计划的实现,但是有什么方法可以解决这个问题吗?如果我理解正确,您正在创建MyTask的这样一个实例
MyTask myTask = new MyTask();
问题是Spring不知道MyTask的另一个实例已经创建。我建议在应用程序上下文中创建一个原型bean:
<bean id="myTaskTemplate" class="mypackage.MyTask" scope="prototype" />
并将以下内容添加到bean定义中
<bean id="myTaskCreatingBean" class="...">
<lookup-method name="createMyTask" bean="myTaskTemplate"/>
</bean>
与
MyTaskbean将由spring创建,并且依赖项将正确地自动连接。您如何创建myTask实例?是的,我正在使用默认构造函数创建myTask实例。我投入运行的任何东西都会起作用。问题在于这种注射。好吧,这就成功了:毕竟问题在于我对春天的了解不够。非常感谢你,伙计。
<bean id="myTaskCreatingBean" class="...">
<lookup-method name="createMyTask" bean="myTaskTemplate"/>
</bean>
MyTask myTask = new MyTask();
MyTask myTask = createMyTask();