tnblog
首页
视频
资源
登录
什么时候才能领悟,取之越多失之越多
排名
5
文章
229
粉丝
15
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

AOP和IOC的区别

5081人阅读 2022/3/27 20:55 总访问:1221455 评论:0 收藏:0 手机
分类: 架构

二者没有联系。ioc是控制反转,aop是面向事务。

IOC就是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是通过容器生成,同时,要是产生的是单例的bean,他还可以给管理bean的生命周期。

AOP技术它利用一种称为”横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为”Aspect”,即切面。所谓”切面”,简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

1、定义不同

ioc:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

aop:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

2、功能不同

ioc:Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。

采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。

aop:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

3、实现项目不同

ioc:现有的框架实际上使用以下三种基本技术的框架执行服务和部件间的绑定:

类型1 (基于接口): 可服务的对象需要实现一个专门的接口,该接口提供了一个对象,可以重用这个对象查找依赖(其它服务)。早期的容器Excalibur使用这种模式。

类型2 (基于setter): 通过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。

类型3 (基于构造函数): 通过构造函数的参数为可服务对象指定服务。PicoContainer只使用这种方式。HiveMind和Spring也使用这种方式。

aop:AOP是一个概念,并没有设定具体语言的实现,它能克服那些只有单继承特性语言的缺点(如Java),AOP具体实现有以下几个项目:

AspectJ (TM): 创建于Xerox PARC. 有近十年历史,成熟

缺点:过于复杂;破坏封装;需要专门的Java编译器。

动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。

基于动态代理API的具体项目有:

JBoss 4.0 JBoss 4.0服务器

基于字节码的项目有:

aspectwerkz ,spring

原文:https://www.cnblogs.com/gxyjava/p/11832931.html


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

用Autofac增强容器能力:引入面向切面编程(AOP)的能力

用Autofac增强容器能力:引入面向切面编程(AOP)的能力[TOC] 基本介绍 Autofac是.NET里IOC(Inversion of Control)...

IOC控制反转的形象比喻。AOP形象比喻

IOC控制反转的形象比喻通常情况下,假如你有一天在家里口渴了,要喝水,那么你可以到你小区的小卖部去,告诉他们,你需要一...

AOP入门案例-AOP核心概念 01

一、AOP相关概念Joinpoint(连接点):就是方法Pointcut(切入点):就是挖掉共性功能的方法Advice(通知):就是共性功能,最终以...

AOP配置(XML)-AOP基本配置 02

一、AOP基本配置1、2、案例、续写至AOP入门案例-AOP核心概念 012.1、新增一个共性方法2.2、3、案例、

AOP配置(XML)-切入点表达式 03

一、切入点表达式的组成二、位置、三、1、2、2的案例、切入点案例、四、

AOP配置(XML)-三种切入点配置方式 04

一、案例、1、公共切入点2、局部切入点3、直接配置的切入点二、

AOP配置(XML)-五种通知类型配置 05

一、各通知格式1、前置通知2、后置通知3、返回后通知4、抛出异常后通知5、环绕通知注意:当同一个切入点配置了多个通知时,...

AOP配置(XML)-通知中获取参数 06

1、方式1,且比较常用案例、1.1、给save()添加参数1.2、配置前置通知1.3、共性方法获取原方法的参数2、通知获取参数数据第...

AOP配置(XML)-通知中获取返回值 07

注意:获取通知中获取返回值只有返回后通知和环绕通知才能拿1、返回后通知2、环绕通知在共性方法的具体写法

AOP配置(XML)-通知中获取异常对象 08

注意:通知中获取异常对象只有抛出异常后通知和环绕通知能拿到1、抛出异常后通知2、环绕案例、

AOP配置(注解)-注解配置AOP 01

1、xml配置和注解的对比2、注解的最终步骤文字描述案例、1、初始环境2、注解配置注意:切入点还可以单独写到一个类。应用场...

AOP配置(注解)-AOP注解驱动 03

一、案例、续写于AOP配置(注解)-注解配置AOP 011、导入测试用的junit坐标2、创建配置类3、测试

AOP 综合案例-业务层接口性能监控案例 04

一、环境1、pom里面的坐标<!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <a...

AOP底层原理-动态代理JDKProxyCglib 02

一、动态代理——JDK ProxyJDKProxy动态代理是针对对象做代理,要求原始对象具有接口实现,并对接口方法进行增强案例、调用...
你在那么美丽的地方,纯属奇迹般的偶然。