Spring框架的AOP和IOC实现原理分析

很多面试的时候都会问关于AOP和IOC的问题,因此在这里做个总结:

首先,为什么要用spring?

答:spring能够很好的和各大框架整合,spring通过IOC容器管理了对象的创建和销毁  工厂模式(设计模式),在使用hiberna丶mybatis的时候,不用每次都编写提交事务的代码,可以使用spring的AOP来管理事务。

什么是AOP?

答:(Aspect oriented Propramming) 即面向切面编程,它弥补了OOP(Object Oriented Programming)面向对象编程的不足;AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码的编写方式;

两种实现方式:

JDK的动态代理:只能对实现了接口的类产生代理;缺点:必须让目标对象实现接口,才能使用JDK代理。如果目标对象实现接口,spring默认采用JDK代理

          Cglib的动态代理: 可以对没有实现接口的类产生代理。产生了子类对这个类进行增强,如果目标对象没有实现接口,spring采用cglib代理

Spring 的AOP开发中的相关术语:

Aspect(切面): 是通知和切入点的结合,通知和切入点共同定义了关于切面的全部内容---它的功能、在何时和何地完成其功能

joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.

Pointcut(切入点):所谓切入点是指我们要对哪些joinpoint进行拦截的定义.  通知定义了切面的”什么”和”何时”,切入点就定义了”何地”.

Advice(通知):所谓通知是指拦截到joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)

Target(目标对象):代理的目标对象

Weaving(织入):是指把切面应用到目标对象来创建新的代理对象的过程.切面在指定的连接点织入到目标对象

Introduction(引入)(不要求掌握):在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.

常见AOP应用场景:

logging, tracing, profiling and monitoring 日志记录,跟踪,优化

Synchronization 同步

Transactions 事务管理 

Performance optimization 性能优化,效率检查

Caching 缓存        

Context passing 内容传递        

Error handling 错误处理        

Lazy loading 延迟加载    

Authentication 权限检查

AOP概念图分析:

 

IOC:控制反转(Inversion of Control,英文缩写为IoC)。控制反转:即将对象的创建权反转给Spring。

依赖注入的思想实际是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。 总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring中创建被调用者的工作由Spring来完成,然后注入调用者,即所谓的依赖注入和控制反转。

注入方式有两种:依赖注入和设置注入;

IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象

IOC和DI的区别:

IOC:控制反转,将对象的创建权交给SpringDI:Spring创建这个类的过程中,把这个类所依赖的属性设置进来。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值