@Order 在两个列表中具有不同的值

Ham*_*mid 5 java spring spring-boot

下面是我的要求,举一个简单的例子:

public interface Animal {}

@Component
@Order(1)
public class Hippo implements Animal{}

@Component
@Order(2)
public class Crocodile implements Animal{}
Run Code Online (Sandbox Code Playgroud)

我想以List不同的顺序将它们注入两个。例如landAnimals,第一个索引中应该有河马,第二个索引中waterAnimals应该有鳄鱼,而第一个索引中应该有鳄鱼,第二个索引中应该有河马。

@Autowired
private List<Animal> landAnimals; // 0-Hippo & 1-Crocodile (achieved with @Order)

@Autowired
private List<Animal> waterAnimals; // 0-Crocodile & 1-Hippo (not achieved)
Run Code Online (Sandbox Code Playgroud)

@Order,我们可以动态更改它吗?

Ani*_* B. 0

您无法动态地使用@Order.

注意:我认为您不需要创建两个不同的列表。注入单个列表并在需要时相应地反转。

您可以致电Collections.reverse()以根据您的要求反转列表。

例子 :

@Autowired
private List<Animal> landAnimals;

public void showOrderList() {
   Collections.reverse(animals);
   for (Animal animal : animals) {
      // do some operation..
   }
}
Run Code Online (Sandbox Code Playgroud)