一、有序接口介绍
春天中提供了一个有序的接口。从单词意思就知道命令接口的作用就是用来排序的。
春框架是一个大量使用策略设计模式的框架,这意味着有很多相同接口的实现类,那么必定会有优先级的问题。于是春天就提供了命令这个接口,来处理相同接口实现类的优先级问题。
二,下令接口分析
1,下令接口的定义:
<代码>公共接口命令{/* * *的有用常量最高优先级的值。 * @see java.lang.Integer # MIN_VALUE */int HIGHEST_PRECEDENCE=Integer.MIN_VALUE;/* * *的有用常量最低优先级值。 * @see java.lang.Integer # MAX_VALUE */int LOWEST_PRECEDENCE=Integer.MAX_VALUE;/* * *获得该对象的秩序价值。 * & lt; p>高值解释为低优先级。因此, *最低的对象有最高优先级(有点价值 *类似于Servlet {@code load-on-startup}值)。 * & lt; p>同样的顺序值将导致任意位置的排序 *受影响的对象。 * @return顺序的值 * @see # HIGHEST_PRECEDENCE * @see # LOWEST_PRECEDENCE */int getOrder(); 代码>
}
该接口卡只有1个方法getOrder()及2个变量HIGHEST_PRECEDENCE最高级(数值最小)和LOWEST_PRECEDENCE最低级(数值最大)。
2, OrderComparator类:实现了比较器接口的一个比较器。
<代码>公共类OrderComparator实现Comparator
提供了2个静态排序方法:sort (List<?比;列表)用来排序集列表合,排序(Object[]数组)用来排数序对象组
可以下OrderComparator类的公共int比较(o1,对象o2)方法,可以看到另外一个类PriorityOrdered,这个方法的逻辑解析如下:
-
<李>若对象o1群是下令接口类型,o2是PriorityOrdered接口类型,那么o2的优先级高于o1李>
<李>若对象o1群是PriorityOrdered接口类型,o2是下令接口类型,那么o1的优先级高于o2李>
<李>其他情况,若两者都是要求接口类型或两者都是PriorityOrdered接口类型,调用命令接口的getOrder方法得值到订单,订单值越大,优先级越小
简单来说就是:
OrderComparator比较器进行排序的时候,若2个对象中有一个对象实现了PriorityOrdered接口,那么这个对象的优先级更高。若2个对象都是PriorityOrdered或命令接口的实现类,那么比较有序接口的getOrder方法得到订单值,值越低,优先级越高。李>
三,春天中使用命令接口在的例子
在春天配置文件中添加:& lt; mvc:注解驱动/祝辞,那么SpringMVC默认会注入RequestMappingHandlerAdapter和RequestMappingHandlerMapping这两个类,既然SpringMVC已经默认为我们注入了RequestMappingHandlerAdapter和RequestMappingHandlerMapping这两个类,如果再次配置这两个类,将会出现什么效果呢?
当我们配置了注解驱动以及这两个bean的时候.Spring容器就有了2个RequestMappingHandlerAdapter和2个RequestMappingHandlerMapping。