Spring面試題之如何控制Bean初始化順序
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
RankTwo.java
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
Results.java
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
Results.java
beans.xml
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
Results.java
beans.xml
RanksClient.java
問題:如何在Spring中控制Bean初始化先後順序?
從Spring 2.0出現後,Spring提供@Order註解來定義了組件的加載順序。
@Order定義
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documentedpublic@interfaceOrder
這個標記包含一個value屬性,類型是整型,如:1,2 等等。值越小擁有越高的優先級。
默認的屬性是Ordered.LOWEST_PRECEDENCE,
代表的是最低優先級。
通過代碼可以發現最大值和最小值的定義就是Inger的最大值和最小值。
簡單舉例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
Results.java
beans.xml
RanksClient.java
運行輸出:
[RankOne, RankThree, RankTwo]
修改RankTwo代碼:
@Component@Order(1)publicclassRankTwoimplementsRanks{//Samecodeasgivenabove}
運行輸出:
[RankTwo,RankOne, RankThree]