javascript
Spring @Order批注
介紹:
Spring @Order注釋是在Spring 2.0中首次引入的。 然后,它僅用于定義AspectJ建議中的順序。 在Spring 4.0的后面,對該注釋的實現進行了進一步改進。 從那時起,它還支持對Java數組或List之類的集合中的Spring組件或bean進行排序。
對于基于Spring XML的應用程序,此注釋在內部使用OrderComparator類,對于基于注釋的Spring應用程序,此注釋在內部使用AnnotationAwareOrderComparator 。
在本教程中,我們將探討如何使用此注釋。
Spring
Spring @Order批注僅接受一個可選參數value ,該參數確定組件的順序:
@Retention(value=RUNTIME) @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 List<Vehicle> 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
總結
以上是生活随笔為你收集整理的Spring @Order批注的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 育碧宣布游戏《刺客信条:幻境》支持英伟达
- 下一篇: 使用路由器注意哪些事项