切入点表达式
基本语法
这是用于配置AOP的切入点的路径的表达式,类似于
<aop:pointcut id="pointcut4" expression="execution(* SpringAopdemo.ProductDaoImpl.find(..))"/>
是基于execution 函数完成的表达式。
- 语法
[访问修饰符] 方法返回值 包名.类名.方法名(参数)
public void com.spring.CustomerDao.save(…)
其中访问修饰符可以省略,其中 void 可以使用通配符 * (任意类型)代替。
其中除了方法的参数意外的任何的地方,都可以使用 * 来代替,参数只用用 . . 来表示任意参数:
* *.*.*.CustomerDao.save(..) 或者是
* *.*.*.*Dao.save(..)
//以dao为后缀的类的save方法
* com.spring.CustomerDao+.save(..)
// + 号代表的是当前类以及其子类,的save方法都会被增强
* com.spring..*.*(..)
//两个点点表示的是spring包以及它下面的所有子包,加上 * ,
//表示的是这个包下以及它下面的所有子包中的所有类,所有方法,都会被增强
// * 号也可以写成类名或者方法名
也可以全部写成 * 来表示
表示所有包下的所有类的所有方法都会被增强
AOP的思想
在多套纵向的业务逻辑中,统一的对这些逻辑进行横切,对它们的横切面进行有需要的增强,当不需要增强的时候,可以直接去除横切面的增强,不会对原有的纵向逻辑代码产生影响,示例图如下: