WEB开发网
开发学院网络安全安全技术 对依赖注入技术的初学指导 阅读

对依赖注入技术的初学指导

 2008-09-20 13:26:20 来源:WEB开发网   
核心提示: 依赖性的声明依赖性是将包含着某一特定服务组件所依赖的接口程序列表的一个constructor里声明的,在下面的情况里,对依赖注入技术的初学指导(7),ConstructorBasedCabAgency的服务件是依赖于AirlineAgency的接口程序的,public Constructo

依赖性的声明

依赖性是将包含着某一特定服务组件所依赖的接口程序列表的一个constructor里声明的。在下面的情况里,

ConstructorBasedCabAgency的服务件是依赖于AirlineAgency的接口程序的。

public ConstructorBasedCabAgency(AirlineAgency airlineAgency)
{
    this.airlineAgency = airlineAgency;
}

类似地,ConstructorBasedTripPlanner也在它的constructor里声明对AirlineAgency和CabAgency的依赖。

依赖性的解决方案

Pico通过查看constructors来解决依赖性的问题。服务组件借助于对具体实施类的注册而完成在Pico容器中的注册。用户组件

通过那些接口类的名字来调用服务组件。智能化的Pico容器将遍历接口实施的层次和等级来返回适合用户需求的实施。(请注意在前面讨论过的

无容器实施方案也是通过类名来实例化实施类的)。

因为TripPlanner接口是依赖于Airline和CabAgency两个接口的,CabAgency接口又是依赖于AirlineAgency接口的,Pico容器

会自动将AirlineAgency首先实例化,然后在建CabAgency时,将对AirlineAgency的引用传递过去;在建TripPlanner时,

将对AirlineAgency和CabAgency的引用传递过去。在下面的需求提出时,上面整个的次序得以执行:

pico.getComponentInstanceOfType(TripPlanner.class);

HiveMind的实施

XML的声明

在这个例子里,接口和实施类都在xml文件里来声明。请注意各服务端组件间的依赖性不在xml文件里声明,而是在随后的代码里。

xml文件里的一个服务点将记录下一个服务组件所需的必要数据。

<?xml version="1.0"?>
<module id="com.dnene.ditutorial.hivemind" version="1.0.0">
 <service-point id="AirlineAgency" interface="com.dnene.ditutorial.common.AirlineAgency">
  <create-instance class="com.dnene.ditutorial.common.impl.SimpleAirlineAgency"/>
 </service-point>
 <service-point id="CabAgency" interface="com.dnene.ditutorial.common.CabAgency">
  <invoke-factory>
   <construct class="com.dnene.ditutorial.common.impl.SetterBasedCabAgency"/>
  </invoke-factory>
  </service-point>
  <service-point id="TripPlanner" interface="com.dnene.ditutorial.common.TripPlanner">
  <invoke-factory>
   <construct class="com.dnene.ditutorial.common.impl.SetterBasedTripPlanner"/>
  </invoke-factory>
  </service-point> 
</module>

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:依赖 注入 技术

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接