aop的实现原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了aop的实现原理相关的知识,希望对你有一定的参考价值。

在hibernate中一些原理说说

aop称为是面向切面编程,那么对它最好的解释就是拦截器了,而他的aop原理呢就是:在执行某些代码之前执行另外的代码,是程序变的灵活,扩展性更灵活,可以随意的删除和添加某些功能!你可以参照filter过滤器,其实filter就是一个很好的对aop的解释 参考技术A 你问的真够牛逼的!不知道你想知道什么!你是想问Spring中的AOP实现原理。还是问hibernate中哪些地方用了动态代理。 参考技术B 建议你看看java的基础知识中代理的用法,应该就容易明白了 参考技术C aop不是面向切面编程么,hibernate不记得有啊~~~~

spring-AOP原理

AOP

  aop概述

1.aop:面向切面(面向方面)编程,扩展功能不通过修改源代码实现

2.aop采取横向抽取机制,取代了传统纵向继承体系,重复性代码(性能监视,事务管理,安全检查,缓存)

  aop底层原理

1.创建一个Base类,让原来的类继承此类,实现纵向抽取机制(父类的方法发生变化,子类也要改变)

2.横向机制:底层使用动态代理的方式实现

  第一种情况:写一个接口,定义一个方法,写一个实现类实现这个接口的方法    -----使用动态代理方式,创建接口代理对象:创建和实现类平级对象,这个对象不是真正的对象,代理对象实现了和实现类一样的功能

第二种:使用cglib动态代理,没有接口的情况,创建子类的代理对象来增强

  aop操作相关术语

 AspectJ是一个面向切面的框架,不是spring的一部分,它要和spring一起使用进行aop的操作;spring从2.0以后增加了对AspectJ的支持

使用AspectJ实现aop由2中

  基于AspectJ的xml配置

  基于AspectJ的注解方式

AOP操作的准备工作

除了导入最基本的jar包外,还需要导入aop相关的jar包

创建spring的核心配置文件,加入aop的约束

使用一个表达式来配置切入点

  1.切入点,实际增强的方法

  2.常用的表达式

execution(<访问修饰符>?<返回类型><方法名><参数><异常>)

 

配置aop操作

<aop:config>

  <!--1.配置切入点-->

<aop:pointcut  expression=" " id=" "/>

  <!--1.配置切面-->

把增强用到方法上面

<aop:aspect ref="  ">

  配置增强类型,method:增强类里面使用哪个方法作为前置

</aop:aspect>

</aop:config>

 

以上是关于aop的实现原理的主要内容,如果未能解决你的问题,请参考以下文章

AOP如何实现及其原理

Spring aop的实现原理

java编程,spring里ioc和aop用啥原理实现的

AOP实现原理

AOP实现原理

Spring AOP的实现原理