要理解这个得先了解控制反转的概念,举例如下
加入有一个接口service 有post方法
其有两个实现类如webservice standaloneservice
需求是客户端调用post方法来完成操作
如public void dopost(string type){
service target = new webservice();
target.post(type);
}
大致如上,如果以后改动,那么就很难的维护,进一步的做法,是用工厂模式来实现
public void dopost(string type){
service target = serviceFactory.newInstance();
target.post(type);
}
工厂的具体实现需要一个类,而且还带有一个不太明确的参数,无法很好的显示
用反转模式
public void dopost(service target){
target.post(type);
}
而参数里面的变量则由ioc容器注入,想用那个具体实现据用那个具体的实现,至于具体的方法都可以放到实现类的里面,这样就实现了高内聚、低耦合
jdk反射
cglib反射
如果想要理解过程,那么就得弄清楚,如何把对象注入到容器中,通过哪种方式把外界配置的信息传进去框架,如何保存,如何转换,如何查找和调用,声明周期如何
一.IOC容器的简介
依赖注入:另一个称呼是控制反转,把对象的依赖关系交由ioc容器来控制,即对象依赖关系的管理被反转了,并由ioc注入
可以理解为IOC提供了管理javabean的容器,通过ioc模式管理依赖关系,并通过ioc注入和aop增强了javabean这样的pojo的事物管理、生命周期管理等
注入的方式有:setter注入、接口注入、构造注入
二.IOC容器的设计和实现