您的位置:首页 > 运维架构

IOC与AOP介绍

2015-06-01 21:28 323 查看
AOP 面向切面,虽然是Spring框架中的一个重要内容,但并不是Spring首创。核心能力是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。

IoC 控制反转,又称依赖倒置。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。传统开发中,总是主调方在编码期间就必须主动集成好被调方,而IoC实现了一种更类似于,被调方在运行过程中再根据配置信息去配对主调方。

上述两种设计模式,在Java中都是借助 反射 来实现的。

这两种设计模式组合后,其核心好处是提供了一种灵活度非常高的组件集成方式,开发人员可以自由的在将组件进行组装,在接口之间进行切入时开发,随心所欲的增加包装或者装饰等等;从而可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

IOC:

在一个业务类中,如果要用到ClassA,是不是要new一个ClassA对象?这个就等于是业务类主动的去创建一个对象。引用spring之后,怎么处理呢?是这个业务类在需要一个ClassA对象时,由spring IOC容器去创建这个ClassA对象,然后注入到业务类需要的地方。这里就体现了控制反转的意思。也就是创建这个ClassA对象由业务类主动的去创建改为了被动的接受spring IOC容器的注入。

AOP:

面向切面,多用在日志、权限等。

某种意义上很像代理。比如希望在执行业务类的时候,同时记录日志。可以在执行业务类的代码后插入一部分记录日志的代码。但业务类有很多,如果每一个业务类都调用这段写日志的代码,就好麻烦,而且写日志的代码与业务类的代码也耦合在一起。所以这时就可以用到AOP,把这段写日志的代码抽出来,把它叫做一个切面,动态切入到指定方法的指定位置,这个位置叫做切入点。

这种思想就是面向切面的思想,它其实也是面向对象思想的一个补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: