Bhu*_*van 3 java reflection dependency-injection guice
我正在浏览谷歌guice
,然后我想到它是如何工作的.
所以这是关于如何property injector
运作的理论.
Guice
首先要我们创建一个injector
并将所有binding
信息传递给它.
Injector injector = Guice.createInjector(new BillingModule());
Run Code Online (Sandbox Code Playgroud)
*谷歌guice页面的代码片段
好的,在这一点上,我可以认为有一个类包含所有信息binding
.
当我们这样做的时候
injector.getInstance(RealBillingService.class);
Run Code Online (Sandbox Code Playgroud)
我们在这里诀窍.
injector
将返回一个proxy instance
真实RealBillingService
对象,当我们调用一个
的方法RealBillingService
对象,proxy instance
调用处理程序使用reflection
来
根据在创建注入器期间传递的信息,确定要注入和填充的属性.
题
这就是我认为的guice
工作方式.如果我错了,'Guice'
实现它的实际方式是什么?
如果这是guice
工作方式,那么Guice
总是返回proxy object
,用户代码总是调用proxy objects
.这是真的 ?
我的解释图示
你的理解有点不对劲.想想这样说:当你这样做Guice.createInjector(...)
,这是当吉斯做所有的反射找出要看什么,哪些需要得到地方注射.当你这样做时injector.getInstance(...)
,Guice不需要做任何反思.它创建了RealBillingService
正确的权限,注入了所有(传递)依赖项,并返回(不是代理).
如果你使用Guice的AOP功能,那么这些对象将是代理,但Guice不会返回代理.它只是调用@Inject
构造函数,设置@Inject
注释字段,调用@Inject
注释方法,并返回该对象.
编辑:另请参阅MiniGuice,这是Guice类喷射器的单一类实现.
归档时间: |
|
查看次数: |
3380 次 |
最近记录: |