JavaEE——Spring学习笔记03【AOP开发】( 四 )


3)容器中的配置

5.1.3 环绕通知:aroud
在目标方法执行前和执行后都进行通知,修改切面类中的方法!
1)切面类中的方法
/** 利用环绕通知检查余额是否足够(前置)和生成对账单(后置)* */public Object validMoneyAndGenerateStatement(ProceedingJoinPoint point) throws Throwable {Object obj = null;//前置通知: 检查余额是否充足validMoney();obj = point.proceed();//调用切点的方法//后置通知: 生成对账单generateStatement();return obj;}
2)容器中的配置

3)测试类不变
/** 测试账户的类* */public class AccountTest {@Testpublic void testAccount() {//1.创建Spring容器的对象ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-aop.xml");//2.获取容器中Account对象Account account = (Account) applicationContext.getBean("account");//取钱account.out();}}
5.1.4 异常通知:after-
1)目标类中的方法
【JavaEE——Spring学习笔记03【AOP开发】】//取钱public int out() {money -= 100;//取出100元System.out.println("已扣除100元!");int num = 100 / 0;//设置异常return money;}
2)切面类中的方法
/** 异常通知* */public void exception(Exception e) {System.out.println("目标方法执行出错" + e.getMessage());}
3)容器中的配置

4)测试类不变
5.1.5 最终通知:after
1)切面类中的方法
/** 最终的通知* */public void after() {System.out.println("不管有无异常,我都进行通知");}
2)容器文件中的配置

3)测试类不变
AOP的总结:
1. 切什么?用什么切?
找切面与被切面,被切面是业务,切面是扩展业务
2. 从哪切?
找切点
3. 什么时间切?
定义通知类型(前置,后置,环绕,异常,最终)
5.2 Aop的注解开发方式
无论是xml的aop开发 。还是注解的aopo开发,都可以实现方法增强的功能 。
5.2.1 设置注解的包扫描器

5.2.2 AOP注解在使用前要先开启