Spring总结(二)(AOP)
springAOP的原理:
1、当启动spring容器的时候,
<bean id="classDao" class="cn.itheima03.spring.aop.xml.ClassesDaoImpl"></bean>
<bean id="myTransaction" class="cn.itheima03.spring.aop.xml.MyTransaction"></bean>
把这两个bean创建对象了
2、解析aop:config
1、解析切入点表达式,把表达式解除出来以后和spring中的bean进行匹配
2、如果匹配成功,则为该bean创建代理对象,在创建代理对象的过程中,把目标方法和通知结合在一起了
如果匹配不成功,则直接报错
3、当客户端调用context.getBean时,获取到的
1、如果该对象有代理对象,则返回代理对象
2、如果该对象没有代理对象,则返回对象本身
说明:
spring容器内部会自动判断:
如果目标类实现了接口,则采用jdkproxy
如果目标类没有实现接口,则采用cglibproxy
前置通知:
1、在目标方法之前执行
2、无论目标方法遇到异常都执行
后置通知:
1、在目标方法之后执行
2、如果目标方法遇到异常,则不执行
3、可以获取连接点的一些信息
最终通知:
1、相当于finally
2、无论目标方法是否遇到异常,都执行
异常通知
1、获取目标方法抛出的异常信息
2、throwing参数的配置才能获取信息
环绕通知
相当于jdkproxy的invoke方法 能控制目标方法的执行(JointPointProceed)
例子随后补上