我從你的問題不明白什麼是你的問題。你是否想要改變初始化bean的順序,或者按照它們在配置中定義的順序來獲取bean的名稱?
1.上述方法設置初始化到bean的順序是什麼意思?
ApplicationContext
負責實例化,配置和連線你的應用程序的bean。 ApplicationContext
在其生命週期的早期階段讀取您的配置(XML,註釋,Java代碼配置等)並實例化這些bean。當我們談論初始化bean的順序時,我們指的是更早實例化哪個bean,並且稍後將實例化這些bean。例如,如果你有兩個類A
和B
其中B
取決於A
象下面這樣:
class A {
}
class B {
private A a;
public B(A a) {
this.a = a;
}
}
正如你可以爲了實例B
我們需要的A
一個實例看。
DependsOn
豆上當前bean依賴。任何指定的bean都將保證在該bean之前由容器創建。 (DependsOn Documentation)
的BeanPostProcessor
一個BeanPostProcessor
允許你修改了它是由容器實例化後。我不認爲你可以用豆後期處理器達到你想要的。 Docs
PriorityOrdered
PriorityOrdered是Ordered接口的擴展。從文檔:
Ordered是一個接口,可以通過應該 可訂購的對象實現,例如在集合中。實際訂單可以是 ,將其解釋爲優先級,第一個對象(具有最低的 訂單值)具有最高優先級。
請注意,此接口還有一個優先級標記: PriorityOrdered。由PriorityOrdered對象 表示的訂單值總是適用於由普通訂單對象表示的相同訂單值之前。
從Ordered
接口PriorityOrdered
分機的說明書,表示優先級順序:由PriorityOrdered
對象表示 順序值之前平原有序對象表示 相同的順序值總是適用。這是主要用於特殊用途界面的 ,用於對象,其中 尤其重要的是首先識別優先對象,而不用 即使獲取其餘對象。一個典型的例子:優先 後處理器在春季ApplicationContext
。
另外我不認爲你也可以從這個接口實現你想要的。
2.能否以任何方式影響使用appContext.getBeanDefinitionNames()檢索bean名稱的順序?
的getBeanDefinitionNames()
方法僅返回一個包含當前工廠(Docs)定義的所有豆的名稱的字符串的數組。