簡體   English   中英

春季:更新和自動裝配:更新的對象永遠不能使用自動裝配嗎?

[英]Spring: newing up and autowiring: Can a newed up object never use Autowired?

我知道,如果您直接新建一個對象,那么Spring現在可以注入@Autowired指定的依賴項。

但是,假設您有一個UI,可以在其中創建新的Customer對象。 我相信在堅持下去之前為客戶建立新方法是唯一的方法。 如果是這樣,如果我希望客戶有一些復雜的行為,需要訪問某些通常會自動連線的服務,該怎么辦?

一旦將Customer對象保存並在那時檢索,是否有可能Spring能夠注入自動裝配的依賴項? 因此,錯誤是試圖“過早”使用Customer對象?

我的主要問題是,是否要在新對象中使用自動裝配以反映設計缺陷?

編輯:我已經看到了一個更新的對象實際上可以使用Autowire的方式,但是我的問題還是,對於Customer,User,Person等常見類,對於他們來說甚至需要使用@Autowired也是不尋常的嗎? 它們本質上應該是僅數據對象嗎? 我似乎既需要創建新對象,又要讓這些對象表現出行為,但是也許我在設計方面做錯了。

您可以在Spring中使用org.springframework.beans.factory.ObjectFactory<T>創建一個對象的多個實例,就像Java EE CDI的javax.enterprise.inject.Instance<T>接口一樣。 請參閱: http : //docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/ObjectFactory.html

@Autowired
ObjectFactory<Customer> customerFactory; 

...
Customer newCustomer = customerFactory.get();
...

如果“客戶”是您的實體類,則應避免自動裝配服務。

您的實現看起來如何? 您能否提供更多詳細信息?

我相信Sergii對設計存在缺陷的確認是正確的,並且我與該應用的原始設計師進行了溝通。 因此,即使有人可以跳過箍來自動連接新對象,這也不符合最初的設計,也不符合Sergii所說的Spring Boot的方法。

我看到了一種無需自動裝配即可完成我所需要的方式的方法-新對象的復雜行為現在已在應用程序的其他位置完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM