簡體   English   中英

在由多個子類擴展的超類中自動裝配Spring bean

[英]Autowiring Spring beans in a super class extended by many subclasses

將一大堆@Autowired bean放在超類中是否有任何缺點,這些bean在該類中沒有使用,而是在擴展超類的子類中使用?

不,沒有缺點。

只要確保你不使用自動裝配的構造函數,因為它很快就會成為支持它們的痛苦。

你的代碼看起來很丑,春季啟動可能需要幾毫秒的時間,當然這些字段需要更多的內存(Java需要的字段)。 但除此之外,我不會指望任何問題。

對於“正常”運行時,應該沒有影響(內存除外)

我想可以說10到30個字段可以說最多10個bean。 如果你有TON字段,那么測試並測量內存和性能影響。

一如既往,這取決於。 如果你所有的bean都是單一的作用域,那應該不是什么大問題,這就是“官方派對”。

如果您的bean是請求作用域(例如控制器類),那么您可能遇到的問題比您所知道的要大得多。 也許其中一些依賴也不是單身人士? 您可以輕松地為請求范圍控制器類的每個實例化構建500個bean,因為您正在構建依賴關系及其依賴關系等等。

現在,由於春季冰川的實例化速度很慢,你確實遇到了問題。 春天框架的官方派對似乎是要忽略這個問題,因為我相信@Bozho會在這個回復的評論中強烈捍衛。 所有這一切顯然是因為“網絡范圍”是在2.0版本的現有設計上復制的,並且由於大量支持的用例,這完全在現有實現的前提下完成。

當然,解決方案是規范化有線依賴關系; 不要把它們全部放在基類中。 如果你很懶,你可以在ApplicationContext中連接並在需要時為每個服務使用顯式調用getBean。 當然,這完全違背了彈簧的任何設計指南。

暫無
暫無

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

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