Chinaunix首页 | 论坛 | 博客
  • 博客访问: 715178
  • 博文数量: 147
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 10:36
文章分类

全部博文(147)

文章存档

2011年(1)

2010年(1)

2009年(35)

2008年(110)

我的朋友

分类: Java

2008-09-11 14:57:48

依赖是面向对象系统中类与类或组件的一种基本关系,
例如:A类在编译时候要用到B类,我们称a在编译时依赖b
如下:
public class Person{
private Calculator mytools;
public Person(){
mytools=new Calculator();
}
..........
}
public class Calculator{
.....
}
上面这个例子中person类依赖calculator类,不你呢个独立与calulator类编译,这样也就无法进行独立开发。
系统就无法实现子系统划分,也无法进行并行开发,系统的设计难度就会增大

反向依赖注入的原则:
为了达到person类能够独立于caluator类的编译效果,就必须引入接口,让俩个类间接关联!
public Interface ICal{
int add(int a,int b);
}
public class Caluator implements ICal{
....
}
public Interface Person11{
public void run();
}
public class Person implements person11{
private ICal mytools;
pbulic void setCaluator(ICal ical){
mytools=ical;
}
..........
}
EJB反向依赖注入案例:
有接口:HelloWordRemote  HelloWordLocal ICal(Remote)
而HelloWordBean实现了分别实现了他们
另外又有了个远程接口:
@Remote
public Interface MyService{
public String helloWord();
public int add(int a,int b);
}
一个类想实现这个接口并且在这个类中引用了...如下:
@Stateless
public class FacedServcie implements MyService{
@EJB(mappedName="HelloWorldBean1/local")
private HelloWordLocal myserv1;
@EJB(mappedName="HelloWordBean1/remote")
private ICal ical;
.....
....
}
也就是在这个组件中引用了其他的组件就可以使用反向依赖注入
@EJB标注为该变量提供了一种默认的对象注入,这里mappedName属性引用了jndi服务器上注册名为"HelloWordBean1/local"的接口引用,并将该引用注入到myserv1变量上。当然也可以通过xml的方式来配置反向依赖注入。下篇文章将会写到jndi和enc的概念。

阅读(2214) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~