Order注释用于排序
public @ interface order {/* * theordervalue.* pdefaultis { @ link ordered # lowest _ precedence }.* @ see ordered # get }
扩展:优先级注释是javax扩展注释,功能与Order相同
publicclassorderutilstests { @ testpublicvoidgetsimpleorder () } { assert equals (integer.value of ((50 ),order utils.get } @ testpublicvoidgetpriorityorder () assertequals(integer.valueof ), orderutils.getorder ) simplepriority.click }@order(50 ) privatestaticclasssimpleorder ) @priority ) 55 ) privatestestate
publicinterfaceordered { intgetorder (; } 3.OrderComparator使用OrderComparator比较两个对象的排序顺序
publicfinalclassordercomparatortests { privatefinalordercomparatorcomparator=new order comparator (; @ testpublicvoidcompareorderedinstancesbefore ((assert equals (-1,this.comparator.compare ) newstubordered ) 100 ) } @ testpublicvoidcompareorderedinstancessame ((assert equals ) 0,this.comparator.compare ) newstubordered ) 100 )、 } @ testpublicvoidcompareorderedinstancesafter ((assert equals (1,this.comparator.compare ) newstubordered ) 982300 ) Publicstubordered(intorder ) { this.order=order; } @Override public int getOrder () { return this.order; }}其内部比较逻辑
return(I1I2)? -1:(I1I2)? 1 : 0; 如果i1小于i2,则返回-1i1大于i2;如果1i1等于i2,则返回04.annotationawareordercomparatorannotationawareordercomparator
可以同时处理对象实现Ordered接口或@Order注释
其提供了静态方法sort,可以对List进行排序
publicclassannotationawareordercomparatorextendsordercomparator { }测试代码
publicclassannotationawareordercomparatortests { @ testpublicvoidsortinstances (} { listobjectlist=new ArrayList ); list.add(newb ); list.add(newa ) ); annotationawareordercomparator.sort (list; asserttrue(list.get(0) instanceof A ); asserttrue(list.get(1) instanceof B ); }@order(1) privatestaticclassa ) ) order )2) privatestaticclassb ) }5.bean注册顺序Demo2Config的对象在Demo1Config之前被初始化并注册
注意点:其构造函数的初始化无效
@configuration@order(2) public class demo1config (public demo1config ) ) system.out.println (demo1config ); } @ beanpublicdemo1service demo1service () system.out.println (' demo1config已加载) ); 返回新守护1服务(; }@configuration@order(1) public class demo2config (public demo2config ) ) system.out.println(demo2config ) ) ) )。 } @ beanpublicdemo2service demo2service () system.out.println (已加载demo2config ) ); 返回新守护进程2服务(; } public class main { publicstaticvoidmain (string [ ] args ) annotationconfigapplicationcontextcontext=newannotationconfigapapapapation
demo1config demo2config demo2config加载了demo1config并加载了引用
3358 wisely man.iteye.com/blog/2217192
33559 www.cn blogs.com/syuf/p/6846522.html
见:https://www.Jian Shu.com/p/8442 d 21222 ef