您的位置:首页 > 编程语言 > Java开发

Spring中IOC与AOP的理解

2017-04-26 17:51 267 查看
关于IOC我们知道是Spring中很重要的组合部分,下面就IOC的理解写一点自己的心得:

1.IOC是什么?

IOC也称控制反转,其实是和依赖注入的含义是一样的,就是把原先控制代码对象的生产由代码转换到IOC容器中去实现。作用是为了解耦,降低类之间的耦合度,其设计思想就是设计模式的工厂模式,不懂什么是工厂模式的点击此:。。。。。,我们并不需要知道其生产的具体过程,我们只要其产出的对象即可。其工作流程就是:在Spring容器启动的时候,Spring会把你在application.xml中配置好的bean都初始化,在你需要调用的时候,把已经初始化的bean分配给你要调用这些bean的类,而不用去创建一个对象的实例。

2.IOC的传值方式有哪些?

一般的是设值传入和构造方法传入。

3.IOC的容器有哪些?

常见的一般是ApplicationContext和BeanFactory,这两个容器的区别请看这里:http://blog.csdn.net/hi_kevin/article/details/7325554

4.依赖注入的实现方式

就是Java的反射,通俗的来讲就是根据给出的类名来动态地生成对象,用set方法将事先保存在hashmap中的类属性注入到类中。

AOP

1.AOP是什么

AOP可以说是对OOP的补充和完善,当我们需要为分散的对象引入公共行为的时候,OOP就显得无力,OOP不能解决从左到右的关系,例如日志,权限,事务之类的代码往往分散于很多代码中,在OOP设计中,这导致了大量代码的重复,我们可以把这些代码封装成一个切面,然后注入到目标对象中

2.AOP的方法

一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。这里静态织入的原理就是在编译期间,切面直接以字节码形式编译到目标字节码中。

3.如何配置AOP

1.        配置ProxyFactoryBean,显式地设置advisors, advice, target等

2.        配置AutoProxyCreator,这种方式下,还是如以前一样使用定义的bean,但是从容器中获得的其实已经是代理对象

3.        通过<aop:config>来配置

4.        通过<aop: aspectj-autoproxy>来配置,使用AspectJ的注解来标识通知及切入点

4.AOP的一些关键词

Joinpoint:拦截点,如某个业务方法;

Pointcut:Jointpoint的表达式,表示拦截哪些方法。一个Pointcut对应多个Joinpoint;

Advice:要切入的逻辑。

  Before Advice:在方法前切入;

  After Advice:在方法后切入,抛出异常时也会切入;

  After Returning Advice:在方法返回后切入,抛出异常不会切入;

  After Throwing  Advice:在方法抛出异常时切入;

  Around Advice:在方法执行前后切入,可以中断或忽略原有流程的执行;
这里关于实现代理的部分关于JDK动态代理与Cglib的介绍稍后更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: