spring AOP


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