博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中AOP使用——配置xml方式
阅读量:6912 次
发布时间:2019-06-27

本文共 1370 字,大约阅读时间需要 4 分钟。

hot3.png

1.确认目标(bean)

2.编写通知(通知实现一个接口)

通知方法

前置通知

public void before(JoinPoint joinPoint){	//判断某用户可执行的方法中,是否存在要运行的方法	if("method1".equals(joinPoint.getSignature().getName())){		throw new RuntimeException("没有权限执行该方法");	}}

后置通知

public void afterReturing(JoinPoint joinPoint, Object returnVal){	//增强}

环绕通知

public Object around(ProceedingJoinPoint proceedJoinPoint) throws Throwable{	//目标方法的执行	Object object = proceedJoinPoint.proceed();	return object;	}

环绕通知-终极版

public Object around(ProceedingJoinPoint proceedingJoinPoint){	try{		//前置通知		Object result = proceedingJoinPoint.proceed();		//后置通知	}catch(Exception e){		//抛出通知	}finally{		//最终通知		return Object	}}

抛出通知

public void afterThrowing(JoinPoint joinPoint, Throwable ex){	System.out.println(joinPoint.getTarget().getClass().getSimpleName()+" : "+joinPoint.getSignature().getName()+"  : "+ex.getMessage());}

最终通知

public void after(JoinPoint joinPoint){	System.out.println(joinPoint.toLongString());}

##3. 配置切点切面 ##

applicationContext-aspectj.xml

切入点可直接写入通知中

异常

java.lang.ClassCastException:com.sun.proxy.$Proxy17 cannot be cast to xxxServiceImpl

原因:使用了jdk动态代理,目标对象是接口,无法转换为子类

解决方法: 使用类代理(cglib动态代理)

注解:

xml

转载于:https://my.oschina.net/u/3371784/blog/862720

你可能感兴趣的文章
TCP通信丢包原因总结
查看>>
洛谷 P1908 逆序对 Label:归并排序||树状数组 不懂
查看>>
基于HBase0.98.13搭建HBase HA分布式集群
查看>>
idea编辑器jdk版本报错
查看>>
哈希表的构造方法、冲突处理方法及哈希拉链法的简单代码实现
查看>>
Pycharm创建Django项目
查看>>
配置事务以及事务回滚
查看>>
spring 使用@Bean装配Bean
查看>>
SharePoint 2010 模板页中添加site map
查看>>
iOS开发小工具
查看>>
爬取雪球网
查看>>
IOS开发之--iPhone XR,iPhone XS Max适配
查看>>
微信小程序之左右布局
查看>>
DBUtils和连接池
查看>>
2018.12.25 SOW
查看>>
IE userData
查看>>
vue2.0+mint-ui 仿资讯类顶导航内容联动优化
查看>>
poj4022
查看>>
poj1488
查看>>
浅谈UE4引擎
查看>>