zoukankan      html  css  js  c++  java
  • org.springframework.core.Ordered接口

    关于Ordered接口,用过的人可能知道,这里我谈下自己的理解。也希望各位大神能给予指点。

    源码如下:

    /**
     * Interface that can be implemented by objects that should be
     * orderable, for example in a Collection.
     *
     * <p>The actual order can be interpreted as prioritization, with
     * the first object (with the lowest order value) having the highest
     * priority.
     *
     * <p>Note that there is a 'priority' marker for this interface:
     * {@link PriorityOrdered}. Order values expressed by PriorityOrdered
     * objects always apply before order values of 'plain' Ordered values.
     *
     * @author Juergen Hoeller
     * @since 07.04.2003
     * @see OrderComparator
     * @see org.springframework.core.annotation.Order
     */

    public interface Ordered {


    /**
    * Useful constant for the highest precedence value.
    * @see java.lang.Integer#MIN_VALUE
    */
    int HIGHEST_PRECEDENCE = Integer.MIN_VALUE;


    /**
    * Useful constant for the lowest precedence value.
    * @see java.lang.Integer#MAX_VALUE
    */
    int LOWEST_PRECEDENCE = Integer.MAX_VALUE;




    /**
    * Return the order value of this object, with a
    * higher value meaning greater in terms of sorting.
    * <p>Normally starting with 0, with <code>Integer.MAX_VALUE</code>
    * indicating the greatest value. Same order values will result
    * in arbitrary positions for the affected objects.
    * <p>Higher values can be interpreted as lower priority. As a
    * consequence, the object with the lowest value has highest priority
    * (somewhat analogous to Servlet "load-on-startup" values).
    * @return the order value
    */
    int getOrder();


    }

    当然这里并不是无故提出这个接口来看的。事由是由PropertyPlaceholderConfigurer这个类的加载顺序导致的。

    这个类是实现了Ordered接口并且有这样一句话

    private int order = Ordered.LOWEST_PRECEDENCE;  // default: same as non-Ordered

    来说明PropertyPlaceholderConfigurer加载的顺序,如果你细心的话,Ordered上面的一个注释你会看到。

    大概的翻译就是值越小加载优先级越高,而普通的对象我们定义的是没有实现Ordered接口的,即是他所说的

    'plain' Ordered values.这样的对象的加载优先级比实现Ordered接口优先级最低的还要低。就是说虽然

    PropertyPlaceholderConfigurer类的优先级是实现Ordered接口中最低的,但也比plain Object的优先级高。所以我们在

    定义PropertyPlaceholderConfigurer的时候,可以把位置放后面而先用其值。如图:




  • 相关阅读:
    0309. Best Time to Buy and Sell Stock with Cooldown (M)
    0621. Task Scheduler (M)
    0106. Construct Binary Tree from Inorder and Postorder Traversal (M)
    0258. Add Digits (E)
    0154. Find Minimum in Rotated Sorted Array II (H)
    0797. All Paths From Source to Target (M)
    0260. Single Number III (M)
    0072. Edit Distance (H)
    0103. Binary Tree Zigzag Level Order Traversal (M)
    0312. Burst Balloons (H)
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3313324.html
Copyright © 2011-2022 走看看