我在茫茫人海寻着你,沿着你给的痕迹,我想我们会相遇,在浪漫的雨季,或是冰天雪地。
依赖注入或控制反转这个概念大家太熟悉啦,在eternal框架里的实现,只能基于属性的,对类的注入。这个注入的工作由持有者来完成,也就是说持有者管理着类之间的关系。实现就比较简单啦,通过注解标识出需要注入的属性,属性值为需要注入的类,持有者把要注入的类,实例化后,通过反射付给属性。
@Inject(DemoService.class) public Service ser;如上面的代码,Service可能是接口、抽象类、类,要注入的类为DemoService,Inject注解为标识属性需要注入。
以下为注入的关键代码,感兴趣的话,可以看下http://code.google.com/p/eternal-mvc/downloads/list 里的源代码1.1
for (Field field:filedArr) { if (isControllerBean(field)) { Inject inject = field.getAnnotation(Inject.class); Class iCls = inject.value(); Object injObj = iCls.newInstance(); field.set(claObj,injObj); log.info("Init Bean "+claObj.toString()+"的属性"+field.getName()+",注入值"+injObj.toString()); } }