我是ATG的新手,並試圖理解基本概念。我閱讀了許多關於它的文章,但這個概念對我而言仍然不清楚。依賴注入在ATG中如何工作?
回答
這在文檔中以及基礎課程中都有介紹。
在ATG中,您定義了「組件」。這些是命名爲給定類的實例。
您可以使用.properties
文件來定義這些組件。屬性文件的路徑和名稱(相對於配置根)成爲組件的名稱。
的.properties
文件包含類的名稱被實例化
該文件還定義了實例的範圍內,即,是否,一旦實例化,對象應該只存在當前請求,當前會話,或應用程序的持續時間(全局)
此外,您可以爲組件定義任何屬性值。這些可以通過值(特別是對於基本數據類型)或通過引用另一個組件,按名稱。
當您啓動一個ATG EAR的實例時,它是啓動的Nucleus。 Nucleus是一個bean容器,負責其中定義的組件的生命週期。
Nucleus在第一次訪問組件時實例化組件。實例化的過程如下(大大簡化)
- 的核將通過調用類的無參數構造創建對象的實例。
- 該組件將被命名爲
.properties
文件位置,並保存在指定的範圍內。 - 然後Nucleus將通過
.properties
文件中定義的所有屬性並調用對象的setXXX(...)
方法來設置值。 - 對於按值的對象(由屬性文件中的值定義),該屬性將被直接設置。
- 對於引用對象(由屬性文件中的Nucleus組件的名稱定義),將在適當的作用域中查找引用的組件,如果存在,則將在該屬性上進行設置。如果引用的組件尚未實例化,那麼核會饞該組件第一(以下爲部分相同的過程),然後設置對象將會對房地產
設定最後一步是如何ATG做依賴注入。
總之,這是什麼意思是,如果你的類A對B類的一個實例上的依賴,那麼作爲一個開發者,你不寫代碼實例B類,或查找並綁定到一個B類的實例。只要你滿足基本要求[1],你就爲A類編寫代碼,並隱含假設你總會得到一個B類的值。然後將B類的一個實例配置爲一個組件,A類的一個實例作爲一個組件,並且你將A類的屬性引用到B類的實例,並且Nucleus將確保當A類中的代碼執行時,它已經被注入了一個有效的B類實例。
[1] A類和B類必須有無參數的構造函數,A類必須有一個可寫的函數B型手術(例如它必須有一個public void setB(B myB)
方法)
謝謝你的簡單解釋。 –
沒問題,@SanchitaDharmadhikary。我確信我在初始培訓課程中認爲你這麼做:) – Vihung
ATG DI模型使用Nucleus來管理對象圖,每個可注入bean需要配置爲Nucleus組件。
Foo.java
package my.foopackage;
import my.custompackageCustomClass.CustomClass;
public class Foo {
private CustomClass customClass;
public void setCustomClass (CustomClass customClass){
this.customClass = customClass;
}
public CustomClass getCustomClass() {
return customClass;
}
}
CustomClass.java
package my.custompackageCustomClass;
public class CustomClass {
private String myProperty;
public void setMyProperty (CustomClass myProperty){
this.myProperty = myProperty;
}
public CustomClass getMyProperty() {
return myProperty;
}
}
Foo.properties
$class=my.foopackage.Foo
$scope=global
customClass=/path/to/configuration/file/ofYourWantedCustomClass/CustomClass
CustomClass.properties
$class=my.custompackageCustomClass.CustomClass
$scope=global
myProperty=myProperty1
請注意,您可以爲您的組件使用多個屬性文件。 例如:CustomClass1.properties,CustomClass2.properties等,您可以爲String myProperty設置不同的值。 它幫助我認爲它像第二層多態(在實例級別),但主要區別在於所有組件都可以通過/ dyn/admin和分層配置進行配置。
- 1. 依賴注入是如何工作的?
- 2. 依賴注入不工作
- 3. 隱式依賴注入在AngularJS中如何工作?
- 4. 依賴注入在Spring中如何工作?
- 5. 如何在symfony /依賴注入中使自動佈線工作?
- 6. 依賴注入在黃瓜中如何工作?
- 7. 依賴注入工作單元
- 8. Laravel依賴注入不工作
- 9. 依賴注入Spring框架 - 工作
- 10. strucutreMap依賴注入不工作
- 11. 簡單的依賴注入不工作
- 12. Spring依賴注入停止工作
- 13. 工匠依賴注入
- 14. 依賴注入與工廠
- 15. 依賴注入和工廠
- 16. 依賴注入和工廠
- 17. C#依賴注入 - 如何注入無源的依賴關係?
- 18. 如何注入d3依賴?
- 19. 依賴注入在Quartz工作預定的類上不工作
- 20. 依賴注入
- 21. 依賴注入
- 22. 依賴注入
- 23. 依賴注入
- 24. 依賴注入
- 25. 依賴注入
- 26. 使用依賴注入來注入依賴注入器
- 27. 工廠模式在依賴注入
- 28. 如何使組件的依賴注入工作
- 29. 如何使用工作單元實例化依賴注入?
- 30. AngularDart依賴注入是如何工作的?
你甚至讀過ATG幫助嗎? – bated