aop——面向切面编程
作用:不改变原来代码的基础上,可以对目标方法增强
优势:
高内聚低 耦合
提高代码的维护性
提高项目的扩展性
aop的实现
1.注解
开启aop注解;构建一个切面;构建切面表达式;测试一下
2.xml配置
术语:
切面:切入点和通知的抽象
切点:与表达式匹配的方法就是切点
连接点:目标对象的所有方法
切点一定是连接点,连接点不一定是切点
增强
织入
advice(通知)Aspect(切面)Target(目标对象)Weare(织入)Intreduction(引入)
底层实现
代理模式:静态代理和动态代理
代理三要素:接口 实现行为 实现行为增强目标对象行为
静态代理
静态代理对象是自己实例化的
目标对象必须实现接口
缺点:类爆炸,因为有多少个方法就得建多少个类
动态代理
jdk
newproxyinstance()
缺点:目标对象必须实现接口
cglib
目标可以不用实现接口
动态代理对象的参数
劣势:根据底层来实现,目标对象不能final修饰
spring整合mybatis
spring.xml
分层
扫描,自动装配
mapper
spring——test
springIOC生命周期配置