面试回答:
描述aop
1.图解 两个箭头 一个竖线
2.举个例子:日志添加。
3.怎么实现:动态代理
如果实现了interface则用jdk 的proxy,和实现了invocationhadenler的拦截器
否则的话用cglib实现。
用在哪些方面:
权限,审计,日志
项目中的应用:
声明式事务管理
spring使用了aspectj框架。
首先使用jdk的动态代理,如果代理失败则使用cglib实现。
- 面向切面编程Aspect-Oriented-Programming
a) 是对面向对象的思维方式的有力补充
- Spring_1400_AOP_Introduction
- 好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码
a) Filter
b) Struts2的interceptor
- 概念:
a) JoinPoint 释意:切面与原方法交接点 即 切入点
b) PointCut 释意:切入点集合
c) Aspect(切面)释意:可理解为代理类前说明
d) Advice 释意:可理解为代理方法前说明 例如@Before
e) Target 释意:被代理对象 被织入对象
f) Weave 释意:织入