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中的前置通知。

被折叠的 条评论
为什么被折叠?



