阶段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配置的方法
讲义的最后

阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置的更多相关文章
- 阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
resources下新建bean.xml文件 xmlns:aop 先配置IOC aop 通知类就是logger.id配置为logAdvice表示日志的通知 梳理流程 首先我们在这有个Service它需 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_3 spring基于XML的AOP-编写必要的代码
新建项目 先改打包方式 导包,就先导入这俩包的坐标 aspectjweaver为了解析切入点表达式 新建业务层接口 定义三个方法 看返回和参数的区别.为了把这三类方法表现出来,并不局限于方法干什么事 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节
基于接口的动态代理要求,要去被代理对象最少实现一个接口 基于子类的动态代理没有实现接口的要求.但是要求我们的被代理类不能是最终类 在Spring中可以选择基于接口还是子类的动态代理 术语 大白话.业务 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知
环绕通知.method属性需要新加一个方法 在logger内中新加aroundPringLog方法 异常代码先注释掉 对比现在的环绕通知和之前写代理类做的环绕通知.右侧的方法内有明确的业务层方法(切入 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式
下面配置了通用的表达式,,上面的四个就不用再配置那么长 索罗的切入点表达式了. 节省了每次都要写一长段表达式的过程 写在一个aop:aspect这个切面下面就只能当前切面用 写在切面里面 运行测试 挪 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
由转账添加事物,使得我们的操作变的非常麻烦.重复代码产生了很多 实际的开发中如果想记录日志每个方法都要执行 如果判断用户是否登陆也是每个方法都需要判断 这些重复的代码我们都需要去解决. 解决的方式,以 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_6 四种常用通知类型
新建项目 复制上节课的pom.xml内的代码 复制java下的代码 测试类也复制过来 配置文件也拷贝过来 logge下增加几个方法 测试方法只需要一个saveAccount方法就可以了 增加其他三种通 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_5 切入点表达式的写法
写测试类来测试..也不需要整合JUnit了就是个普通的测试类. 我们要看就是有没有给我们真正的实现 记录日志 配置起作用了. 三个方法都调用一下 目前我们的配置只能对saveAccount增强 通常情 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
随机推荐
- 借助Charles来测试移动端-下篇
本篇是借助Charles来测试移动端的下半篇.(上篇任意门点我) 上次说到可以借助Charles来抓移动端的网络请求,接下来,我们来看一下怎么通过Charles来模拟返回,还是以网页版豆瓣为例. 先找 ...
- Eclipse设置模板codetemplates
在Window->Preferences->Java->Code Style->Code Templates,点击"Import",导入模板codetemp ...
- nginx搭建及加固
系统使用的是centos7 Nginx安装及配置 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务 安装 我是用的环境是ce ...
- CentOS 7 中英文桌面安装步骤详细图解
https://www.cnblogs.com/haoliyou/p/7694868.html
- volatile关键字解决线程间内存共享变量同步的问题,让变量可以立即同步。
- 我的前端组件 ---- 16:9固定宽高比例的div
目标:遇到一个需求,让图片在页面中,不管宽度如何变化.宽高保持16:9的比例. 实现: 方法一:这也是比较经典的一个方法,利用padding-bottom来实现. <!DOCTYPE html& ...
- 针对windows10 10.4号升级后VMware低版本不能使用的问题
windows在10.4号下午发布的新版补丁升级,VMware老版本不能打开,之后发现好多小伙伴都在贴吧发帖子VMware不能用,提示升级,犯愁升还是不升,老版本的安装了好几个虚拟机,换成新版不知道能 ...
- C++:关键字explicit的用法
预测下面C++程序的输出: #include <iostream> using namespace std; class Complex { private: double real; d ...
- BZOJ 1095: [ZJOI2007]Hide 捉迷藏 动态点分治+堆
写了7k多,可以说是一己之力切掉了这道毒瘤题~ 开 $3$ 种堆,分别维护每个子树最大深度,以及每个节点在点分树中对父亲的贡献,和全局的最优解. 由于需要支持堆的删除,所以写起来特别恶心+麻烦. 细节 ...
- 2018 计蒜之道 初赛 第五场 A 贝壳找房搬家
贝壳找房换了一个全新的办公室,每位员工的物品都已经通过搬家公司打包成了箱子,搬进了新的办公室了,所有的箱子堆放在一间屋子里(这里所有的箱子都是相同的正方体),我们可以把这堆箱子看成一个 x*y*z 的 ...