2014-09-05 34 views
0

我是使用Spring的Java團隊的初級工程師。我們一直在指導實例變量的Autowired Setters,而不是Autowiring實際的實例變量。對於我們爲什麼這樣做,我有些困惑,這樣做的優勢是什麼,以及以這種方式處理依賴管理的可能性不足?Spring中的AutoWired Setter而不是AutoWired實例變量

+1

你可以找到答案你的問題在這裏: http://stackoverflow.com/questions/3746574/where-is-the-autowired-annotation-supposed-to-go-on-the-property-或最實現方法具 – 2014-09-05 11:38:06

回答

1

從我(在Java EE中居然3年)的一些意見:

優點:

  • 您可以添加setter方法方法的一些額外的驗證或邏輯
  • 你能避免使用反射在適用於某些特殊情況的junit測試
  • 安裝人員可以被覆蓋以便您可以注入其他東西

缺點:

  • 在大多數情況下,因爲你注入其他服務這種驗證是沒有必要的
  • 你必須有大量無用的getter和setter方法的代碼。例如在我的代碼中,我通常每個服務使用大約5個DAO類,所以這是10個額外的寫法,這給我60個額外的行。
  • 大多數情況下,在應用程序初始化後,您不需要注入其他DAO或服務。
  • 以後不能使用setter/getters,因爲在春天你正在使用接口而不是具體實現。在接口上設置setter和getter是一種不好的做法。

我個人更喜歡實例變量或構造函數注入。但這與服務有關。我不會說使用setter更好。它有着不同的目的。