假設我有一個名爲SomeClass
的類,它在構造函數中取值並填充該字段。具有值的彈簧自動裝配對象
String text;
String sometext;
public someClass(String text, String sometext){
this.text = text;
this.sometext = sometext;
}
SomeClass
有一種創建新對象的方法。在Java中,當我們創建一個新的對象,我們可以用數值實例一樣
ClassName variable = new ClassName(text, sometext);
,並使用構造
public ClassName(String text, String sometext){
this.text = text;
this.sometext = sometext;
}
但在春季使用自動裝配,我們該怎麼做填充字段ClassName
這樣嗎?
@Autowired
public ClassName(SomeClass someClass){
this.text = someClass.text;
this.sometext = someClass.sometext;
}
這不會工作。春怎麼會知道這SomeClass
UPDATE的實例:
我錯了。我沒有想到DI的方式。而不是自動裝配SomeClass
。我不得不autowire ClassName
。
沒有DI我創建了一個新的對象類ClassName
的方法當使用DI我不得不在類的方法自動裝配ClassName
@Autowired
ClassName className;
我可以填充直接使字段公開的字段
className.text = text;
className.sometext = sometext;
我可以使用javabeans。 但如何通過構造函數來完成。
注意:彈簧配置沒有任何問題。基本掃描已啓用。
所以你說我不能通過構造函數使用自動裝配插入動態值? – user2471976
@ user2471976是的,你根本無法做到這一點。 Spring在部署時需要知道任何構造函數的參數值,因爲只有在正確創建了所有bean的情況下才部署應用程序。看看[這個](http://stackoverflow.com/questions/6739566/anyway-to-autowire-a-bean-that-requires-constructor-arguments)和[this](http://stackoverflow.com/questions/34046451/spring-autowire-with-dynamic-constructor-parameters-using-annotation-approach)post。對於這種情況,你最好的選擇就是** getter setter方法**,就像我在我的回答中提到的那樣。 –
感謝您的快速回復。 – user2471976