aspectj - Spring aspect ordering -


what order of invocations on "way in" if have 3 aspects like:

@order(ordered.highest_precedence) public class aspect1  public class aspect2  @order(ordered.lowest_precedence) public class aspect3 

so aspect2 doesn't have order annotation.

it clear aspect1 invoked before aspect3, mean aspect2 invoked in between ?

from official javadoc @order:

annotation defines ordering. value optional, , represents order value defined in ordered interface. lower values have higher priority. default value ordered.lowest_precedence, indicating lowest priority (losing other specified order value).

this means aspect2 have value of ordered.lowest_precedence, integer.max_value. don't think there way of being 100% sure invoked before aspect3 - believe depends on order of component scan.

if want sure, can put in exact values:

@order(1) public class aspect1 {...}  @order(2) public class aspect2 {...}  @order(3) public class aspect3 {...} 

or put value between integer.min_value , integer.max_value on aspect2:

@order(0) public class aspect2 {...} 

here test confirms this:

@runwith(springjunit4classrunner.class) @springapplicationconfiguration(classes =     {class1.class, class3.class, class2.class}) public class testtest {      public static interface test {}      @order(ordered.highest_precedence)     @component     public static class class1 implements test {}      @order     @component     public static class class2 implements test {}      @order(ordered.lowest_precedence)     @component     public static class class3 implements test {}      @autowired     list<test> list;      @test     public void test() {         system.out.println("list: " + list);     } } 

this output:

list: [testtest$class1@d21a74c, testtest$class3@6e509ffa, testtest$class2@2898ac89] 

but if change order of classes 2 , 3 in @springapplicationconfiguration, class2 invoked second.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -