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

junit4.13.2testorg.springframeworkspring-context5.2.7.RELEASEorg.springframeworkspring-aspects5.2.7.RELEASE
2)配置切面(就是业务增强的那个类)
/** 账户类的切面:其实就是Account业务增强的类* */public class AccountAspect {/** 验证账户的合法性* */public void validAuth() {System.out.println("验证账户是否合法!");}/** 检查余额是否足够* */public void validMoney() {System.out.println("检查余额是否充足!");}/** 生成对账单* */public void generateStatement() {System.out.println("生产对账单!");}/** 发送短信* */public void sendMsg() {System.out.println("发送短信!");}/** 后置通知:取完钱后查看余额的方法* */public void getYuMoney(Object result) {System.out.println("账户余额还有:" + result);}/** 利用环绕通知检查余额是否足够(前置)和生成对账单(后置)* */public Object validMoneyAndGenerateStatement(ProceedingJoinPoint point) throws Throwable {Object obj = null;//前置通知: 检查余额是否充足validMoney();obj = point.proceed();//调用切点的方法//后置通知: 生成对账单generateStatement();return obj;}/** 异常通知* */public void exception(Exception e) {System.out.println("目标方法执行出错" + e.getMessage());}/** 最终的通知* */public void after() {System.out.println("不管有无异常,我都进行通知");}}
3) 配置被切面(就是配置目标类)
/** 账号类* */public class Account {int money = 1000;//取钱/*public void out() {money -= 100;//取出100元System.out.println("已扣除100元!");}*///取钱public int out() {money -= 100;//取出100元System.out.println("已扣除100元!");int num = 100 / 0;//设置异常return money;}//存钱public void in() {money += 100;//存储100元System.out.println("已存储100元!");}//转账public void transfer() {System.out.println("转账人民币!");}//开户public void open() {System.out.println("开通账户!");}//销户public void close() {System.out.println("销毁账户!");}}
4)配值目标类和切面类的关系-aop.xml
容器管理

5)测试类
/** 测试账户的类* */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.2 后置通知:after-
在目标方法执行后进行通知
1)以取钱后显示余额为案例,目标类中的方法
//取钱public int out() {money -= 100;//取出100元System.out.println("已扣除100元!");return money;}
2)切面类中的方法
/** 后置通知:取完钱后查看余额的方法* */public void getYuMoney(Object result) {System.out.println("账户余额还有:" + result);}