簡體   English   中英

防止在Spring bean中兩次調用setter嗎?

[英]Preventing a setter being called twice in a Spring bean?

一位同事要我將我們的setter轉移到我們的Spring bean中的構造函數中,因為“ setter公開了一個私有變量,在Spring的構建階段之后可能會對其進行更改”。

雖然我可以體會到這種感覺,但是我不確定這是最好的方法嗎? 出於這個原因,我想知道Spring bean中是否存在防止兩次調用setter的方法,還是應該檢查一下是否在構造后階段之前?

我擔心的是構造函數使用索引,而不是命名屬性。 從代碼維護的角度來看,這不是很友好。

當您在私有字段上使用@Autowired@Inject時,Spring支持通過反射插入字段值。 這樣,您無需公開設置器,也無需使用構造函數進行依賴項注入。

如果希望設置器出現,則可以考慮定義自己的注釋,定義切入點並創建一個方面,以防止在對象上至少調用一次該方法時執行該方法。

我個人更喜歡通過構造函數填充這些字段並將其標記為final。 考慮到代碼的可讀性,有時由此產生的樣板數量可能會過高。 為了提高可讀性,您可能需要使用@Qualifier@Named批注,以進一步指定在存在多種可能性時哪個對象應滿足依賴關系。

暫無
暫無

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

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