Spring中的@Order注解学习

x33g5p2x  于2022-09-25 转载在 Spring  
字(1.6k)|赞(0)|评价(0)|浏览(632)

在这篇文章中,我们将讨论**@Order 注释**。我们正在介绍此注释的各种功能。

介绍

@Order 注释 定义注释组件的排序顺序。此注解可从 Spring 2.0 开始使用。此注释有一个可选的 value 参数,它表示 [Ordered](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/Ordered.html) 接口中定义的订单值。默认值为 Ordered.LOWEST_PRECEDENCE,显示最低优先级,类似地,值 Ordered.HIGHEST_PRECEDENCE 用于覆盖最高优先级。

1.@Order注解

在 Spring 4 之前,@Order 注解仅用于对 AspectJ 方面进行排序。在 Spring 4 之后,Spring @Order 注释 支持在列表和数组等集合中对自动连接的组件进行排序。

2. 如何使用@Order

为了理解这个注解,让我们构建下面的例子。

*我们想为潜在客户推荐一辆车。

  • 丰田是第一推荐。
  • 本田是第二个推荐。
  • UsedCard 将是最低优先级推荐。
2.1 汽车接口

让我们创建我们的 Car 界面。

public interface Car {

 /**
  * This method is responsible for recommending car to customer based on our algorithm
  * @return Recommended car
  */
 String getCarRecommendation();
}
2.2 汽车创作

让我们创建三个不同的汽车实例,并根据我们的算法设置顺序。

@Component
@Order(1)
public class Toyota implements Car {

 @Override
 public String getCarRecommendation() {
  return "Toyota";
 }
}

@Component
@Order(2)
public class Honda implements Car {

 @Override
 public String getCarRecommendation() {
  return "Honda";
 }
}

@Component
@Order(Ordered.LOWEST_PRECEDENCE)
public class UsedCar implements Car {

 @Override
 public String getCarRecommendation() {
  return "Certified Car";
 }
}

在“二手车”部分,我们添加了最低优先级。

3. 测试应用

让我们测试一下我们的应用程序,看看这个注解是如何工作的。

@RunWith(SpringRunner.class)
@SpringBootTest
public class OrderAnnotationTest {

 @Autowired
 private List < Car > cars;

 @Test
 public void test_spring_order_annotation() {

  assertThat(cars.get(0).getCarRecommendation(), is(equalTo("Toyota")));
  assertThat(cars.get(1).getCarRecommendation(), is(equalTo("Honda")));
  assertThat(cars.get(2).getCarRecommendation(), is(equalTo("Certified Car")));
 }
}

###4. 结论

在本文中,我们讨论了 Spring @Order 注释。我们了解了何时使用此注解以及如何自定义其行为。

相关文章

微信公众号

最新文章

更多