阶段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的概念
随机推荐
- 1.K近邻算法
(一)K近邻算法基础 K近邻(KNN)算法优点 思想极度简单 应用数学知识少(近乎为0) 效果好 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 图解K近邻算法 上图是以 ...
- PAT Basic 1014 福尔摩斯的约会 (20 分)
大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ...
- 双向BFS统计
Hdu1195 两个四位密码 问你最少多少步能到达 /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof ...
- JavaScript 复制变量的三种方法
参考:Copying Objects in JavaScript - Orinami Olatunji(@orinamio_) October 23, 2017 直接将一个变量赋给另一个变量时, ...
- echarts-all.js:1 Uncaught TypeError: Cannot read property 'getAttribute' of null
转载:https://blog.csdn.net/you23hai45/article/details/51595108 由于echarts图形ID是由后台传输过来的,并且是根据图形数据一起传过来,出 ...
- 【LuoguP4081】[USACO17DEC]Standing Out from the Herd
题目链接 题意 给定多个字符串,每个串中仅在该串中出现的本质不同的子串个数. Sol 多串匹配想到用广义SAM. 之后从串的匹配角度不是很好做.发现一个本质不同的串最多只会贡献到一个串的答案里. 那么 ...
- LINUX装机问题:无法使用“Ctrl+Alt+[F1~F6]”快捷键切换到终端
用VMware装LINUX虚拟机之后,你会发现在X Window的登陆界面无法使用“Ctrl+Alt+[F1~F6]”快捷键切换到终端,这是因为VMware默认的快捷键也是Ctrl+Alt,所以你只需 ...
- web前端_DOM操作
DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...
- Ajax异步传值总结
Ajax异步传值 将数据从前台传向后台: 1:通过get方式,将参数在链接中,配合“?”进行传值. 实例: //前台传值方法 //触发该方法调用ajax function testAjax(yourD ...
- Win 7无法安装Microsoft .NET Framework 4.6.2
造冰箱的大熊猫@cnblogs 2018/9/6 在Windows 7 64位计算机上安装某个软件时,安装程序提示需先安装Microsoft .NET Framework 4.6.2.本来以为小事一桩 ...