依赖是面向对象系统中类与类或组件的一种基本关系,
例如: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) |