Jor*_*.S. 12 java sorting spring spring-mvc ioc-container
我有几个bean实现相同的接口.每个bean都注明了
@Component
@Order(SORT_ORDER).
public class MyClass implements BeanInterface{
...
}
Run Code Online (Sandbox Code Playgroud)
有一次我自动装配了一个组件列表,我期待一个排序的bean列表.bean的列表没有按照我用注释设置的顺序排序.
我尝试实现Ordered接口,并发生相同的行为.
@Component
public class Factory{
@Autowired
private List<BeanInterface> list; // <- I expect a sorted list here
...
}
Run Code Online (Sandbox Code Playgroud)
我做错了吗?
rub*_*nsa 16
从Spring 4开始,支持订购自动装配的集合.
总结:如果你添加@Order(value=1),@Order(value=2)......你的bean定义,他们将按照有序集合中注入value参数.这与声明您希望收集按自然顺序不同 - 因为根据Jordi PS的回答,您必须在收到后自己明确地对列表进行排序.
Jor*_*.S. 14
我找到了解决这个问题的方法,正如你所说,这个注释并不适用于它,尽管它是一个很好的功能.
为了使它以这种方式工作,它只需要在包含排序列表的bean中添加以下代码.
@PostConstruct
public void init() {
Collections.sort(list,AnnotationAwareOrderComparator.INSTANCE);
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
9051 次 |
| 最近记录: |