房地产公司网站开发,网站开发 群,制作公众号网站开发,免费自助建站介绍#xff1a; Spring Order注释是在Spring 2.0中首次引入的。 然后#xff0c;它仅用于定义AspectJ建议中的顺序。 在Spring 4.0的后面#xff0c;对该注释的实现进行了进一步改进。 从那时起#xff0c;它还支持对Java数组或List之类的集合中的Spring组件或bean进行排序… 介绍 Spring Order注释是在Spring 2.0中首次引入的。 然后它仅用于定义AspectJ建议中的顺序。 在Spring 4.0的后面对该注释的实现进行了进一步改进。 从那时起它还支持对Java数组或List之类的集合中的Spring组件或bean进行排序。 对于基于Spring XML的应用程序此注释在内部使用OrderComparator类对于基于注释的Spring应用程序此注释在内部使用AnnotationAwareOrderComparator 。 在本教程中我们将探讨如何使用此注释。 Spring Spring Order批注仅接受一个可选参数value 该参数确定组件的顺序 Retention(valueRUNTIME)
Target(value{TYPE,METHOD,FIELD})
Documented
public interface Order 此参数的值越低其优先级越高。 换句话说值较低的将在Java List或数组中排在第一位。 此参数的默认值为Ordered。 LOWEST_PRECEDENCE 。 这意味着标记的组件在所有有序bean中的优先级最低。 类似地我们可以使用Ordered.HIGHEST_PRECEDENCE标记具有最高优先级的Spring bean。 为什么使用 Order批注的一些常见用例包括 在AspectJ中订购建议 最初引入它的真正意图 当我们想定义加载CommandLineRunner或ApplicationRunner类的顺序时 用于以有序方式在Java数组或List中注入bean 列表 在Spring Security的情况下定义过滤器执行的顺序 设置示例 假设我们有一个Vehicle界面 public interface Vehicle {public String getDetails();
} 我们定义了一些实现类 Order(1)
Component
public class Bike implements Vehicle {public String getDetails() {return Bike: 2 Wheeler;}
}Order(2)
Component
public class Car implements Vehicle {public String getDetails() {return Car: 4 Wheeler;}
}Order(3)
Component
public class Truck implements Vehicle {public String getDetails() {return Truck: 6 Wheeler;}
} 在这里我们已经订购了所有这三个Spring组件。 Bike bean的优先级最高其次是Car 最后是Truck 。 测试我们的实施 让我们快速编写一个Junit来看看它是如何工作的 RunWith(SpringRunner.class)
SpringBootTest
public class SampleAppTest {Autowiredprivate ListVehicle vehicles;Testpublic void testSpringOrderAnnotation() {assertThat(vehicles.get(0).getDetails(), isEqual(Bike: 2 Wheeler));assertThat(vehicles.get(1).getDetails(), isEqual(Car: 4 Wheeler));assertThat(vehicles.get(2).getDetails(), isEqual(Truck: 6 Wheeler));}
} 显然 Spring根据其优先级将我们的bean自动连接到了车辆 Java List中 。 结论 在本微型教程中我们探讨了Spring Order批注的用法。 翻译自: https://www.javacodegeeks.com/2019/09/spring-order-annotation.html