ioc和aop(ioc和aop的区别)

本篇文章给大家谈谈ioc和aop,以及ioc和aop的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

ioc和aop的区别?

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

参考资料:百度百科-AOP

参考资料:百度百科-ioc

[img]

Spring中的ioc和aop有什么作用?为什么要用ioc和aop?面试中多次被问到,求一个详细 清晰的解答...

还是需要去了解,多看看书!

IOC:控制反转,是一种设计模式。一层含义是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层如汪是依赖注入:将相互依赖的对象分离,在spring配置文件中描述他们的依赖关系。他们的依赖关系只在使用的时候才建立。简单来说就是不需要NEW一个对象了。

AOP:面向切面,是一种编程思想,OOP的延续。将系统中非核心的业务提取出来,进行单独处理。比如事务、日志和安全等。这个简单来说就是可以在一段程序之前或者之后做一些事。祥橡纤

Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题。使代码重用度高、谨仿易于维护。

不过AOP和IOC并不是spring中特有的,只是spring把他们应用的更灵活方便

面试aop与ioc原理是什么?

1、ioc:java 程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,在使世没伍用其他的合作对象时,均要使用像 new object() 这样的语察宴法来完成合作对象的申请工作。

2、aop:利用一种称为 “横切” 的技术,解剖封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,这样就搜或能减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

扩展资料

工作模式:

1、AOP:面向切面(方便)编程,可以为某一类对象 进行监督和控制,也就是在调用这类对象的具体方法的前后去调用你指定的功能模块,从而达到对一个模块扩充的功能,可以通过注解或者XML文档进行实现。

2、IOC:控制反转(DI依赖注入),将以前由自己手动创建对象的过程交给了Spring,Spring帮助我们生产对象、管理对象、管理对象和对象之间的依赖关系,降低了代码的耦合度,方便我们后期对项目做维护。

关于ioc和aop和ioc和aop的区别的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表