小编Jor*_*rge的帖子

如何自动装配Spring TaskExecutor创建的线程?

根据Spring的文档,使用TaskExecutor的方法如下:

import org.springframework.core.task.TaskExecutor;

public class TaskExecutorExample {

  private class MessagePrinterTask implements Runnable {

    private String message;

    public MessagePrinterTask(String message) {
      this.message = message;
    }

    public void run() {
      System.out.println(message);
    }

  }

  private TaskExecutor taskExecutor;

  public TaskExecutorExample(TaskExecutor taskExecutor) {
    this.taskExecutor = taskExecutor;
  }

  public void printMessages() {
    for(int i = 0; i < 25; i++) {
      taskExecutor.execute(new MessagePrinterTask("Message" + i));
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果MessagePrinterTask具有自动连接的依赖关系,它们将不会被Spring配置,因为我们在Spring的上下文之外实例化我们的bean(至少我理解它是这样),即使Spring将提供实际的线程创建.如果MessagePrinterTask具有自动连接的依赖关系,我们如何让Spring识别它们?我尝试了以下修改示例无效(是的,正确启用了自动装配):

import org.springframework.core.task.TaskExecutor;

public class TaskExecutorExample {

  @Component
  private class MessagePrinterTask implements Runnable { …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading autowired

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

autowired ×1

java ×1

multithreading ×1

spring ×1