spring通过切入点(植入增强业务的那个点——某个或多个业务方法的集合)表达式指定具体的切入点。
指示符 | 作用 |
---|---|
bean | 匹配指定类型的方法 |
within | 匹配指定一个或多个类型的方法 |
execution | 匹配表达式指定的所有方法执行的连接点 |
注意bean一定要小写
bean(*Service)
bean(roleService)
使用bean表达式针对类中所有方法(粗粒度的切入点)定义
within表达式也是应用于类级别,实现粗粒度的(对类中的所有方法进行)控制的,指定相关类时,需要指定具体包名。
within(com.service.RoleServiceImpl) | 指定一个类 |
---|---|
within(com.service.*) | 只包含当前目录下的类 |
within(com.service.*) | 包含当前目录及所有子目录下的类 |
execution是方法级别的,细粒度的控制
execution(void com.service.RoleServiceImpl.addRole()) | 匹配方法 |
---|---|
execution(void com.service.RoleServiceImpl.findById(Integer)) | 方法参数必须为整型 |
execution(* com.service...(..)) | 万能配置 |
注意区分切入点和连接点。JointPoint表示连接点。它是植入扩展功能的方法对象。它封装了核心业务中具体的某个核心业务类的某个业务方法信息。切入点是多个连接点的集合。连接点仅仅表示
切入点中的某一个业务方法。