1. IOC即(Inversion of Control)控制反转,也可以叫做DI(Dependency Injection)依赖注入。
2.AOP(面向切面编程),声明式事务都是在IOC的基础上开花结果。
现在我们来理解下IOC的概念。。。
概念:即调用类对某一个接口实现类的依赖关系由第三方(容器或者协作类)注入,以移除调用类对该接口实现类的依赖关系。
下边举个例子来说明(个人理解,,):
不用IOC概念的例子:
pubic class B{
A c=new C();
public void print()
{
c.eat();
}
}
public interface A()
{
pubic void eat();
}
class C implements A{
public void eat()
{
System.out.pringln(“我是Class C 的eat 方法”):
}
B类中的print 方法要c对象,c是A接口,具体实现类是C。不用IOC概念的话就像上边直接在B类里边new C();这样直接在B类里边建立与C 的依赖关系。
如果用IOC概念的话:
将B与C的依赖关系放到第三方里边,就Spring 而言是放在IOC容器里边,具体就是配置文件(*.xml,具体什么名字随你)中,(前提是B类中有cccccc属性的setter方法)
<bean id=ccccc,class=C/>
<bean id=b,class=com.*.*.B>
<property name="c">
<ref="ccccc"/>
</property>
</bean>
2.AOP(面向切面编程),声明式事务都是在IOC的基础上开花结果。
现在我们来理解下IOC的概念。。。
概念:即调用类对某一个接口实现类的依赖关系由第三方(容器或者协作类)注入,以移除调用类对该接口实现类的依赖关系。
下边举个例子来说明(个人理解,,):
不用IOC概念的例子:
pubic class B{
A c=new C();
public void print()
{
c.eat();
}
}
public interface A()
{
pubic void eat();
}
class C implements A{
public void eat()
{
System.out.pringln(“我是Class C 的eat 方法”):
}
B类中的print 方法要c对象,c是A接口,具体实现类是C。不用IOC概念的话就像上边直接在B类里边new C();这样直接在B类里边建立与C 的依赖关系。
如果用IOC概念的话:
将B与C的依赖关系放到第三方里边,就Spring 而言是放在IOC容器里边,具体就是配置文件(*.xml,具体什么名字随你)中,(前提是B类中有cccccc属性的setter方法)
<bean id=ccccc,class=C/>
<bean id=b,class=com.*.*.B>
<property name="c">
<ref="ccccc"/>
</property>
</bean>