博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Spring】纯java实现AOP切面编程
阅读量:2056 次
发布时间:2019-04-28

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

首先导入相关jar包

创建dao类IUserDao

package cn.qblank.aop.dao;import org.springframework.stereotype.Component;@Componentpublic interface IUserDao {	void add();	void delete();}
创建dao实现类UserDao实现接口

package cn.qblank.aop.dao.impl;import org.springframework.stereotype.Component;import cn.qblank.aop.dao.IUserDao;@Componentpublic class UserDao implements IUserDao{	@Override	public void add() {		int i = 1/0;		System.out.println("添加数据中...");	}	@Override	public void delete() {		System.out.println("删除数据...");	}}
创建切面类Aop

package cn.qblank.aop;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;@Component@Aspect  //指定为切面类public class Aop {	/**	 * 环绕	 * @param pjp	 * @return	 * @throws Throwable	 */	@Around("execution(public * cn.qblank.aop.dao.*.*(..))")	public Object around(ProceedingJoinPoint pjp) throws Throwable{		System.out.println("开启事务....");		Object obj = pjp.proceed();		System.out.println("提交事务....");		return obj;	}	/**	 * 抛出异常	 */	@AfterThrowing("execution(public * cn.qblank.aop.dao.*.*(..))")	public void afterThrowing(){		System.out.println("回滚事务!!!");	}}
创建Config类进行注解扫描

package cn.qblank.aop;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration@ComponentScan("cn.qblank.aop")@EnableAspectJAutoProxypublic class AppConfig {	}
接下来我们进行测试

package cn.qblank.aop.Main;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import cn.qblank.aop.AppConfig;import cn.qblank.aop.dao.IUserDao;public class Test {	public static void main(String[] args) {		//开启扫描		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);		IUserDao userDao = context.getBean(IUserDao.class);//		userDao.add();		userDao.delete();		context.close();	}}
运行结果如下:

你可能感兴趣的文章
剑指offer 29.字符串的排列
查看>>
剑指offer 31.最小的k个树
查看>>
剑指offer 32.整数中1出现的次数
查看>>
剑指offer 33.第一个只出现一次的字符
查看>>
剑指offer 34.把数组排成最小的数
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 36.数字在排序数组中出现的次数
查看>>
剑指offer 37.数组中重复的数字
查看>>
剑指offer 38.丑数
查看>>
剑指offer 39.构建乘积数组
查看>>
剑指offer 57. 删除链表中重复的结点
查看>>
剑指offer 58. 链表中环的入口结点
查看>>
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
剑指offer 61. 求1+2+3+...+n
查看>>
剑指offer 62. 孩子们的游戏
查看>>
剑指offer 63.扑克牌顺子
查看>>
剑指offer 64. 翻转单词顺序列
查看>>
剑指offer 65. 左旋转字符串
查看>>
剑指offer 66. 和为S的两个数字
查看>>