spring 学习

spring 中基于代理类的AOP实现

使用ProxyFactoryBean类创建代理是spring AOP实现的最基本的方式。

ProxyFactoryBean是org.springframework.beans.factory FactoryBean 接口的实现类, FactoryBean 负责实例化一个Bean 实例, ProxyFactoryBean负责为其他Bean实例创建代理实例。

ProxyFactoryBean类中的属性:

target:代理的目标对象。

proxyInterfaces:代理需要实现的接口列表,如果是多个接口则用以下形式赋值

<list>

      <value>接口</value>

      .......

</list>

interceptorNames:需要织入目标类的Advice(增强)。

proxyTargetClass:是否是代理类还是接口,默认为false,使用JDK动态代理,设置为true时,使用CGLIB动态代理。

singleton:返回的代理实例是否为单例,默认为true。

optimize:当设置为true时强制使用CGLIB动态代理。

 

AOP中的通知类型

环绕通知 ( org .aopalliance.intercept.Methodlnterceptor )是在目标方法执行前和执行后 实施增强,可应用于日志记录、事务处理等功能

前置通知 ( org.springframework.aop.MethodBeforeAdvice) 是在 目标方法执行前实施增强,可应用于权限管理等功能。

后置返回通知   ( org.spring.framework.aop.AfterReturningAdvice )是在目标方法成功执行后实施增强,可应用于关闭流、删除临时文件等功能。

后置通知  ( org.springframework.aop.AfterAdvice )是在目标方法执行后实施增强,与 后置返回通知不同的是不管 是否发生异常都要执行该类通知,该类通知可应用于释放 资源。

异常通知 (org.springframework.aop. ThrowsAdvice )是在方法抛出异常后实施增强, 应用于处理异常、记录日志等功能。

引入通知( org.springframework.aop.Introductionlnterceptor )是在目标类中添加 一些新的方法和属性,可应用于修改目标类(增强类)。

 

下面通过代码实现前置通知

创建一个接口并定义三个方法

创建其实现类

创建切面类并实现 org.springframework.aop.MethodBeforeAdvice接口来实现前置通知(代码中的check方法)

 

 

配置文件中需配置目标类、切面类

测试类

 

结果

由上述结果可知,在目标类的方法前成功实现了检查权限的功能,这就是springAOP中的前置通知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值