一:动态代理和静态代理的区别?
动态代理是将代理对象下的所有的方法都集中到代理类中集中处理.
静态代理是将代理对象的某个方法进行转发处理
二:注解方式的动态代理
第一步:
引入相关的xsd
通过aop命名空间的<aop:aspectj-autoproxy />声明自动为spring容器中那些配置@aspect 切面的bean创建代理,织入切面.
意思是在方法执行之前,先执行我的方法.要想把这个逻辑织入到某个方法上面,这个方法必须是spring管理起来的.
第二步:
@aspect
@conmpent
@before(execution(public void add(string id)))
pulic void beforeadd()
{
syso("我在add之前执行");
}
三:
在Spring AOP中支持4中类型的通知:
1:before advice 在方法执行前执行。
2:after returning advice 在方法执行后返回一个结果后执行。
3:after throwing advice 在方法执行过程中抛出异常的时候执行。
4:Around advice 在方法执行前后和抛出异常时执行,相当于综合了以上三种通知。
当切入点都一样时,我们可以定义一个切入点,mymethod()