2011-12-21 47 views
2

我剛剛閱讀了Guice的用戶指南中關於Constructor Bindings的章節,但並不真正瞭解何時使用構造函數綁定。Guice 3.0 - 構造函數綁定的目的?

據我所知,它們提供了與@Provider方法相同的功能,除了使用Constructor Bindings創建的實例參與AOP。它是否正確?任何人都可以提供比文檔中的更好的示例嗎?

回答

4

據我所知,它們提供了與@Provider方法相同的功能,除了使用Constructor Bindings創建的實例參與AOP。

這或多或少是正確的,儘管構造函數綁定有一些優點。基本上,這是一種綁定到類的方法,就好像它在特定構造函數上有一個@Inject,即使它不是,也不能自己添加註釋。不像@Provides方法,你可以編寫實用程序,讓你做更有趣的事情。例如,你可以有一個返回類唯一的構造函數utilitiy方法,拋出一個異常,如果有不止一個:

bind(Foo.class).toConstructor(getOnlyConstructor(FooImpl.class)); 

你也可以使用一些其他的註解(除了@Inject),如果你想爲某種原因,並有一個實用的方法,獲取註釋綁定的構造函數。

+2

它也解決了Guice的火雞培根問題:http://tinyurl.com/turkeybaconproblem – 2011-12-21 16:38:27