spring AOP
Spring AOP
aop概念: aspect oriented programming
切面 面向 编程
面向切面编程
意思:
在不改变源码代码的情况下,动态织入代码,实现更加丰富的功能
例子:
在程序的某行位置输出一条日志信息
正常的情况下:在源码这一行,添加一行代码输入日志信息

通过修改源码,达到想要的目的
这样是侵入性
不好,因为你修改了别人的源码
比如后期代码升级,迭代,需要在原来的代码的基础上新增新的功能,怎么实现
第一反应是修改源码,肯定不行
祖传代码不要动
可以使用奥鹏解决这个问题
Aop底层原理
动态代理,动态代理23中设计模式之一
动态代理的底层是反射

动态代理,动态代理23中设计模式之一。
动态代理的底层是反射
动态代理的实现
代理设计模式有两种
1.静态代理
2.动态代理
框架底层都是动态代理,所以我们直接将动态代理1.
通过代码看动态代理
案例:
学生缴费
可以动态生成学生的代理类,调用学生的缴费方法
注意:
学生和代理类,需要实现统一的接口





动态代理的好处是:
可以动态生成任意类型的代理类,并利用反射执行被代理对象的任意方法
灵活
日志
案例中用到了日志插件
丽日,我们程序出错,我们可以用日志记录下来,当我们修改程序的时候,只需要翻看日志文件就可以找到问题,从而更快的加速解决问题
怎么实现日志功能
1.最简单的,什么都不用,用System.out.println()

2.用日志插件来实现
log4j
a.需要引用jar包
在pom.xml文件中配置
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>

b.配置信息
log4j.properties


案例:
观察上面的代码,发现了问题
想要实现日志功能,需要在源码中进行代码的编写,代码侵入
我们怎么再不改变源码的情况下,实现同样的功能
答案就是 aop

怎么实现
1.在addUser方法中写代码,调用after

2.用aop实现动态织入
思路:定义一个织入点,然后再织入点织入需要的方法即可

注意:(到xlm文件的 报错时,将
xmlns:aop="http://www.springframework.org/schema/context"

切入点



浙公网安备 33010602011771号