阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
复制依赖和改jar包方式
src下的都复制过来。
复制到新项目里了
bean.xml里面复制上面一行代码到下面。把aop改成context。
配置spring容器创建时要扫描的包
Service的配置这里就可以删除了
配置注解
使用@Service注解
开始AOP配置
把通知类交给Spring来管理
在Logger上加注解。之类注意,@Service和@Repository都不合适。因为logger属于三层
所以这里用@Component这个注解来配置
写完上面的@Component的注解后。bean.cml内的配置就可以删除了
配置切面类
注意Before这里是aspectj这个包里的,不要和JUnit的混了。
环绕通知
写完这些通知的注解就报错。因为没有切入点表达式
这是我们之前的bean.xml内配置的切入点表达式
新定义的私有方法pt1在pt1的上面定义的切入点表达式和注解
beam.xml内这些就都可以删除了
开启Spring开启注解AOP的支持
引用注解表达式
这里测试前面四个通知的时候,先把环绕通知注释掉
测试
后置居然在最终的前面了
我们都知道 后置通知和异常是互斥的。这里把异常放开
后置通知消失了 变成了异常通知
Spring基于注解的,这四个通知确实有调用的顺序问题,所以我们在开发中,要有一个慎重的考虑
环绕通知放开,其他通知都注释掉
通知都注释掉
环绕通知没有这个问题。这个也好理解,因为代码是我们自己写的 想让他什么时候执行,就什么时候执行
把异常放开的执行效果
如果用注解的话,更建议用环绕通知,因为注解在调用的通知顺序上有问题
总结
注解的配置确实比较简单。因为bean.xml配置就剩下这两行了
切入点的配置也很规范
演示下括号的问题
只写了方法名 ,没写后面的括号
这里其实已经提示报错了
运行就会报错。
不使用xml配置的方法
讲义的最后