Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ScheduledExecutorService+beans_Java_Spring - Fatal编程技术网

Java ScheduledExecutorService+beans

Java 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有一些任务和计划的实现,但是有什

我对ScheduledExecutorService的实现有问题。在我的任务的run方法中,我不能注入bean

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();