spring AOP

Spring AOP
aop概念: aspect oriented programming
切面 面向 编程
面向切面编程
意思:
在不改变源码代码的情况下,动态织入代码,实现更加丰富的功能
 
例子:
在程序的某行位置输出一条日志信息
正常的情况下:在源码这一行,添加一行代码输入日志信息
0
通过修改源码,达到想要的目的
 
这样是侵入性
不好,因为你修改了别人的源码
 
比如后期代码升级,迭代,需要在原来的代码的基础上新增新的功能,怎么实现
第一反应是修改源码,肯定不行
祖传代码不要动
可以使用奥鹏解决这个问题
Aop底层原理
 
动态代理,动态代理23中设计模式之一
动态代理的底层是反射
 
0
 
动态代理,动态代理23中设计模式之一。
动态代理的底层是反射
动态代理的实现
代理设计模式有两种
1.静态代理
2.动态代理
框架底层都是动态代理,所以我们直接将动态代理1.
通过代码看动态代理
 
案例:
学生缴费
可以动态生成学生的代理类,调用学生的缴费方法
 
注意:
学生和代理类,需要实现统一的接口
0
 
0
 
0
 
 
0
 
 
0
 
 
 
动态代理的好处是:
可以动态生成任意类型的代理类,并利用反射执行被代理对象的任意方法
灵活
 
 
日志
案例中用到了日志插件
丽日,我们程序出错,我们可以用日志记录下来,当我们修改程序的时候,只需要翻看日志文件就可以找到问题,从而更快的加速解决问题
 
怎么实现日志功能
1.最简单的,什么都不用,用System.out.println()
 
0
 
2.用日志插件来实现
log4j
 
a.需要引用jar包
在pom.xml文件中配置
 
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
 
0
 
b.配置信息
 
 
log4j.properties
0
 
0
 
案例:
观察上面的代码,发现了问题
想要实现日志功能,需要在源码中进行代码的编写,代码侵入
我们怎么再不改变源码的情况下,实现同样的功能
答案就是 aop
 
0
 
 
怎么实现
1.在addUser方法中写代码,调用after
 
0
 
2.用aop实现动态织入
思路:定义一个织入点,然后再织入点织入需要的方法即可
 
0
 
注意:(到xlm文件的 报错时,将
xmlns:aop="http://www.springframework.org/schema/context"
 
 
 
0
 
 
 
切入点
0
 
 
posted @ 2022-05-17 14:50  码农在广场  阅读(47)  评论(0)    收藏  举报