在注入bean列表时,列表中的顺序与bean的已定义顺序相同

Boz*_*zho 12 spring

@Service @Order(1)
public class FooService implements IService {..}

@Service @Order(2)
public class BarService implements IService {..}
Run Code Online (Sandbox Code Playgroud)

是否保证以下列表中的订单始终为{FooService, BarService}:

@Inject
private List<IService> services;
Run Code Online (Sandbox Code Playgroud)

(同样的问题适用于xml配置)

axt*_*avt 12

我猜不是因为@Order不是通用注释.来自javadoc:

注意:仅对特定类型的组件支持基于注释的排序,例如,对于基于注释的AspectJ方面.另一方面,Spring容器策略通常基于Ordered接口,以允许每个实例的可配置排序.

此外,模块org.springframework.core.annotation.OrderAnnotationAwareOrderComparator源中没有出现.beanscontext

使其按预期运行的简单方法是:

@PostConstruct
public void init() {
    Collections.sort(services, AnnotationAwareOrderComparator.INSTANCE);
}
Run Code Online (Sandbox Code Playgroud)