spring AOP介绍与使用
来源:互联网 发布:淘宝货退回去了不退钱 编辑:程序博客网 时间:2024/06/05 11:00
1.spring中AOP的“黑话”(名词解释)
AOP准备工作
2.导包和加入aop约束
aop+aspects (spring中的包)
aopalliance+aspectj.weaver (额外的包)
2.1准备目标对象
public class UserServiceImpl implements UserService { public void save() { System.out.println("保存用户!"); //int i = 1/0; } public void delete() { System.out.println("删除用户!"); } public void update() { System.out.println("更新用户!"); } public void find() { System.out.println("查找用户!"); }}
2.2准备通知类
public class MyAdvice { //前置通知 // |-目标方法运行之前调用 //后置通知(如果出现异常不会调用)// |-在目标方法运行之后调用 //环绕通知// |-在目标方法之前和之后都调用 //异常拦截通知// |-如果出现异常,就会调用 //后置通知(无论是否出现 异常都会调用)// |-在目标方法运行之后调用//---------------------------------------------------------------- //前置通知 public void before(){ System.out.println("这是前置通知!!"); } //后置通知 public void after(){ System.out.println("这是后置通知!!"); } //后置通知 public void afterReturning(){ System.out.println("这是后置通知(如果出现异常不会调用)!!"); } //环绕通知 public Object around(ProceedingJoinPoint pjp) throws Throwable { System.out.println("这是环绕通知之前的部分!!"); Object proceed = pjp.proceed();//调用目标方法 System.out.println("这是环绕通知之后的部分!!"); return proceed; } //异常通知 public void afterException(){ System.out.println("出事啦!出现异常了!!"); }}
2.3配置目标对象与通知
<!-- 1.配置目标对象 --> <bean name="userService" class="cn.itcast.service.UserServiceImpl" ></bean><!-- 2.配置通知对象 --> <bean name="myAdvice" class="cn.itcast.d_springaop.MyAdvice" ></bean>
2.4织入
<!-- 3.配置将通知织入目标对象 --> <aop:config> <!-- 配置切入点 public void cn.itcast.service.UserServiceImpl.save() void cn.itcast.service.UserServiceImpl.save() * cn.itcast.service.UserServiceImpl.save() * cn.itcast.service.UserServiceImpl.*() * cn.itcast.service.*ServiceImpl.*(..) * cn.itcast.service..*ServiceImpl.*(..) --> <aop:pointcut expression="execution(* cn.itcast.service.*ServiceImpl.*(..))" id="pc"/> <aop:aspect ref="myAdvice" > <!-- 指定名为before方法作为前置通知 --> <aop:before method="before" pointcut-ref="pc" /> <!-- 后置 --> <aop:after method="after" pointcut-ref="pc"/> <!-- 后置 --> <aop:after-returning method="afterReturning" pointcut-ref="pc" /> <!-- 环绕通知 --> <aop:around method="around" pointcut-ref="pc" /> <!-- 异常拦截通知 --> <aop:after-throwing method="afterException" pointcut-ref="pc"/> </aop:aspect> </aop:config>
3.aop注解方式
<!-- 开启使用注解完成织入 --> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
//通知类@Aspect//表示该类是一个通知类public class MyAdvice { @Pointcut("execution(* cn.itcast.service.*ServiceImpl.*(..))") public void pc(){} //前置通知 //指定该方法是前置通知,并制定切入点 @Before("MyAdvice.pc()") public void before(){ System.out.println("这是前置通知!!"); } //后置通知 @AfterReturning("execution(* cn.itcast.service.*ServiceImpl.*(..))") public void afterReturning(){ System.out.println("这是后置通知(如果出现异常不会调用)!!"); } //环绕通知 @Around("execution(* cn.itcast.service.*ServiceImpl.*(..))") public Object around(ProceedingJoinPoint pjp) throws Throwable { System.out.println("这是环绕通知之前的部分!!"); Object proceed = pjp.proceed();//调用目标方法 System.out.println("这是环绕通知之后的部分!!"); return proceed; } //异常通知 @AfterThrowing("execution(* cn.itcast.service.*ServiceImpl.*(..))") public void afterException(){ System.out.println("出事啦!出现异常了!!"); } //后置通知 @After("execution(* cn.itcast.service.*ServiceImpl.*(..))") public void after(){ System.out.println("这是后置通知(出现异常也会调用)!!"); }}
阅读全文
0 0
- spring AOP介绍与使用
- spring aop介绍与配置
- spring与AOP的使用
- Spring中AOP的Introductions使用介绍
- Spring AOP 一、AOP的概念与简单使用
- spring的AOP介绍
- Spring AOP介绍
- Spring中AOP介绍
- spring aop介绍
- Spring AOP介绍
- Spring的AOP介绍
- Spring AOP介绍
- Spring AOP简要介绍
- 【spring框架】AOP介绍
- spring aop 简单介绍
- Spring的aop介绍
- Spring AOP介绍
- Spring AOP介绍
- Laravel 学习路线【4】控制器
- Python字符串
- sftp传输
- Hbuilder如何连远程接服务器上传代码
- Java 编程思想(十)枚举
- spring AOP介绍与使用
- Python使用struct处理二进制(pack和unpack用法)
- 【模板】【Treap/SBT】【树堆】普通平衡树【洛谷P3369】
- 程序员之死
- Maven添加中央仓库外部依赖、添加jar包到本地仓库
- js的垃圾回收机制
- Maximum Product Subarray--lintcode
- JAVA 反射 调用系统隐藏方法
- cocos2dx C++ 嵌入一个网页