2014-10-28 111 views
2

不同的依賴注入的方式有什麼不同的方式注入Grails中關係的區別:與Grails的Grails中

  1. ABCService abcService
  2. 高清abcService

  3. @Autowired ABCService ABCService

+0

在早期版本的Grails中,總是推薦使用'def'形式,因爲開發時重載是通過替換類加載器來實現的 - 如果您給出了顯式類型,則最終會出現「X can not當重新加載時被轉換爲X「錯誤。我相信更近期的Grails中基於代理的reloader在這方面做得比較好,但是舊的習慣很難實現(更重要的是,來自Grails 1.x日的示例代碼和文檔的大量庫仍然存在,並且越來越多由新用戶複製)。 – 2014-10-28 10:59:58

+0

你能解釋一下什麼是「基於代理的reloader」嗎? – 2014-11-03 07:54:04

+0

grails的最新版本使用https://github.com/spring-projects/spring-loaded,這是一個Java代理,允許它在運行時交換修改過的字節碼,而無需替換整個類加載器。 – 2014-11-03 09:49:55

回答

2
  1. 預期類型被指定,如果名稱爲abcService(或其他的Spring bean這樣的名字)服務將有不同的class,那麼你會得到ClassCastException這裏
  2. 就任何豆與名abcService
  3. 春天註解,它是可選的。但如果你打上一個領域,但Grails的/春找不到這樣的bean會拋出NoSuchBeanDefinitionException(前兩次會得到null如果不存在的話)@Autowired可以與def類型也

組合基本上Grails服務是標準的Spring beans,Grails只需要convention over configurationservices中的每個類都會創建一個名爲abcService的bean,可以自動裝入其他bean中。所有其他工作都由Spring完成。另請參閱文檔Spring and Grails