Spring的IOC和AOP
IOC:即控制反转,主要意思就是Spring容器来管理对象的初始化,而不需要程序员人工的使用new方式来创建对象,并且当A对象依赖于B对象时,在配置文件中可以指定,同样不需要程序员在构造函数或是setter中进行对象注入。
AOP:面向切面编程。其实就是一种新的不同于继承的代码重用技术。继承是将共性的地方都写在父类中,各个子类通过继承来复用这些共性的代码。或是将共性的代码抽取出来放入一个类中,凡是想使用这些代码的类,都可以组合这个类来实现功能。这两种方法,在一定方面上解决了部分代码重用。但是,代码重用的能力有限。
下面我将以一个例子来说一下AOP。我举得例子是我们需要在每个DAO类存取数据之后打印一条日志。假设之前我们的DAO在存完后没有任何操作,现在我们需要满足需求,如果使用继承或是组合,不论如何我们都要修改原有的DAO类,这样就违反了开闭原则。所以,我们可以在Spring中这样使用:假设我们有一个代理类LogInterceptor,它会接收被代理的DAO对象,通过指定横切点pointcut,即指定在被代理的DAO类的某个函数执行前、还是执行后或是抛出异常时,这就是横切点。指定好横切点后,我们接下来就是指定横切点处应该执行什么操作。