是否可以在Spring中自动连接组件列表?

jaql4c8m  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(135)

Sping Boot (2.7.16)
我有许多实现Task接口的组件(每个组件都标注为@Component)。
在我的服务中,我希望自动连接一系列任务,最好是按照特定的顺序

  1. @Autowired
  2. // Ideally, sequence like
  3. @Qualifier("firstTask"), @Qualifier("secondTask"), @Qualifier("thirdTask")
  4. private List<Task> tasks;

字符串
这样我就可以在某个时候运行它们。例如,

  1. tasks.foreach(task -> {
  2. task.run();
  3. });


我目前正在自动连接它们,并显式地示例化列表。

  1. @Autowired
  2. @Qualifier("firstTask")
  3. private Task firstTask;
  4. @Autowired
  5. @Qualifier("secondTask")
  6. private Task secondTask;
  7. @Autowired
  8. @Qualifier("thirdTask")
  9. private Task thirdTask;
  10. private List<Task> tasks = List.of(firstTask, secondTask, thirdTask);


但是能够直接自动连接列表将是非常棒的。

ubby3x7f

ubby3x7f1#

(原题我写)
您可以@Autowired一个组件列表

  1. @Autowired
  2. private List<Task> tasks;

字符串
会起作用的。
但是,如果你想定义序列,你不能在服务中这样做,你需要在每个组件上应用@Order注解(在我看来这是错误的,但这就是它的工作方式)。
所以,

  1. @Component
  2. @Order(1)
  3. public class FirstTask implements Task {
  4. // ...
  5. }


  1. @Component
  2. @Order(2)
  3. public class SecondTask implements Task {
  4. // ...
  5. }


得双曲正弦值.

  1. @Component
  2. @Order(3)
  3. public class ThirdTask implements Task {
  4. // ...
  5. }

展开查看全部

相关问题