@Service @Order(1)
public class FooService implements IService {..}
@Service @Order(2)
public class BarService implements IService {..}
是否保证以下列表中的订单始终为{FooService, BarService}
:
@Inject
private List<IService> services;
(同样的问题适用于xml配置)
答案 0 :(得分:12)
我猜不是因为@Order
不是通用注释。来自javadoc:
注意:仅对特定类型的组件支持基于注释的排序,例如:对于基于注释的AspectJ方面。另一方面,Spring容器策略通常基于Ordered接口,以允许每个实例的可配置排序。
org.springframework.core.annotation.Order
和AnnotationAwareOrderComparator
模块的来源中也没有出现beans
和context
。
使其按预期运行的简单方法是:
@PostConstruct
public void init() {
Collections.sort(services, AnnotationAwareOrderComparator.INSTANCE);
}
答案 1 :(得分:3)
自Spring 4发布以来,@Order
的使用范围已扩大到包括@Component