首页 > 编程知识 正文

spring中的ioc和aop,aop的实现方式

时间:2023-05-03 14:02:34 阅读:32264 作者:610

Spring的IOC和AOP原理本文论述了面试的Spring框架IOC和AOP的实现原理。 IOC(inversionofcontrol(1).IOC ) inversionofcontrol )是指容器控制程序对象之间的关系,而不是传统的实现。 程序代码控制权由APP应用代码中转到外部容器中,控制权转移。

IOC(inversionofcontrol ) (1).IOC(inversionofcontrol )不是在传统实现中由程序代码直接操作的容器控制程序对象之间的关系控制权由APP应用码中继到外部容器,控制权的转移是所谓的反转。 在Spring中,对象的生命周期和对象之间的关系由Spring控制。 IoC还有另一个名字——“依赖注入(Dependency Injection )”。 从名称上看,依赖注入是指容器在运行时确定组件之间的依赖关系,容器动态地向组件注入某种依赖关系。

)2).Spring机制向Spring容器注册所有类,并告诉您Spring是什么和需要什么。 然后,Spring会在系统正常运行时主动传递所需的内容。 同时,也交给其他需要的东西。 的所有类的创建、销毁都由spring控制。 也就是说,控制对象生存循环的是spring,而不是引用它的对象。 对于一个特定对象,以前控制其他对象,但现在所有对象都由spring控制,因此将其称为控制反转。

)3) .在系统运行过程中,动态地为一个对象提供其所需的其他对象。

)4) .依赖于实现的思想是通过反射机制实现的,实例化类时,通过反射调用类中的set方法将HashMap中预存的类属性注入类中。 总之,在传统的对象创建方法中,调用方通常创建被调用方的实例,Spring创建被调用方的工作由Spring执行,而注入到调用方的所谓依赖注入或控制则相反。 注入方式有两种。 取决于注入和安装注入。

IoC的好处:减少了组件之间的耦合,降低了业务对象之间交换的复杂性,使您能够灵活地管理对象。

辅助编程(AOP ) 1,AOP面向方面的编程基于IoC,对OOP是有益的补充;

2、AOP利用一种称为“穿越”的技术,将封装对象的内部断开,将影响多个类的公共行为封装到可重用模块中,将其命名为“Aspect”,即方面。 “侧面”简单来说,就是封装与业务无关但为业务模块而共同调用的逻辑或责任。 例如,日志记录减少了系统重复代码,降低了模块之间的耦合度,有利于将来的可操作性和可维护性。

3、AOP表示横向关系,将“对象”比作空心圆柱体,其中封装了对象的属性和行为; 面向方面编程的方法是用切面切割这个圆柱,有选择地提供业务逻辑。 切断的切断面是所谓的“面”。 然后用巧手复原这些切断的切面,不留痕迹,但取得了效果。

4、实现AOP的技术,主要分为两类。

一种是采用动态代理技术,利用截取消息对该消息进行装饰,代替原对象行为的执行;

第二,静态组织允许编译器引入特定语法来创建“方面”,以便编译器在编译时组织有关“方面”的代码。

5、Spring实现AOP:JDK动态代理和CGLIB代理

JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理;其核心的两个类是InvocationHandler和Proxy。

http://www.Sina.com/http://www.Sina.com /

(6).AOP使用场景:

认证权限检查

缓存缓存

上下文传递内容分发

错误处理错误处理

激光加载延迟加载

调试调试

日志记录、跟踪、配置和监控日志记录、跟踪、优化和校准

性能优化、效率检查

持久性持久化

资源池资源轮询

同步化同步

事务管理

另外,滤波器的实现和struts2的拦截器的实现都是AOP思想的体现。

spring有什么好处? 1 .降低了组件之间的耦合性,实现了软件各层间的解耦

2 .可以使用事务管理、消息服务等许多容易提供的服务

3 .容器提供单

例模式支持

4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能

5.容器提供了众多的辅助类,能加快应用的开发

6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等

7.spring属于低侵入式设计,代码的污染极低

8.独立于各种应用服务器

9.spring的DI机制降低了业务对象替换的复杂性

10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部

什么是DI机制?

依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色 需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 因此也称为依赖注入。 spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。

设置注入的优点:直观,自然

通过setter访问器实现灵活性好,但setter方法数量较多时效性差通过无参构造函数实例化

构造注入的优点:可以在构造器中决定依赖关系的顺序。

通过构造方法实现灵活性差,仅靠重载限制太多时效性好通过匹配的构造方法实例化,但建议保留无参构造

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。