spring订购bean类清单


问题内容

我有几个实现相同接口的bean。每个bean都带有注释

@Component 
@Order(SORT_ORDER).
public class MyClass implements BeanInterface{
    ...
}

在某一时刻,我自动装配了一个组件列表,并希望得到一个经过排序的bean列表。Bean列表未按照我使用批注设置的顺序进行排序。

我尝试实现有序接口,并且发生相同的行为。

@Component
public class Factory{


    @Autowired
    private List<BeanInterface> list; // <- I expect a sorted list here
    ...
}

我做错什么了吗?


问题答案:

正如您所说,我找到了解决该问题的方法,尽管这是一个不错的功能,但它并不意味着该注释。

为了使其工作,只需在包含排序列表的Bean中添加以下代码即可。

@PostConstruct
public void init() {
    Collections.sort(list,AnnotationAwareOrderComparator.INSTANCE);
}

希望能帮助到你。