2017-04-02 39 views
0

我一直在互聯網上閱讀文章和教程,涉及到Spring,我發現他們中的很多人都有代碼示例,他們聲明他們的@Autowired成員的範圍爲默認而不是私人@Eutowired集體成員聲明<default>範圍而不是私人

E.g.

@Autowired 
AccountRepository accountRepository; 

代替

@Autowired 
private AccountRepository accountRepository; 

我想知道這是爲什麼。因爲從良好的封裝角度來看,我認爲這是錯誤的。我不知道在春季這樣做有什麼好處嗎?

+0

它們可以是私人的,但那時春天必須通過反射來改變場地的可見性;這可能會被安全管理員拒絕。 –

+4

對於真正的封裝,你不會autowire字段。您將自動裝配構造函數。這也使得測試更容易,並且使得依賴關係更清晰。 –

+1

舉例時,爲了簡潔起見,可以省略「私人」。畢竟,他們並沒有教你如何封裝這些教程,他們希望他們的要點儘可能清楚。 –

回答

1

直接通過字段注入依賴關係並不是一個好習慣,而是使用構造函數注入(@JBNizet也指出),你可以看看here瞭解更多細節。

簡而言之,您應該使用@Autowired上的bean構造函數,通常是public