回顾 Advice
通知(Advice)是 Spring 提供的一种切面(Aspect)。 但其功能过于简单:只能将切面织入到目标类的所有目标方法中,无法完成将切面织入到指定目标方法中。
顾问(Advisor)是 Spring 提供的另一种切面。其可以完成更为复杂的切面织入功能。PointcutAdvisor 是顾问的一种,可以指定具体的切入点。顾问将通知进行了包装,会根据不同的通知类型,在不同的时间点,将切面织入到不同的切入点。
PointcutAdvisor 接口有两个较为常用的实现类:
NameMatchMethodPointcutAdvisor:
名称匹配方法切入点顾问。
RegexpMethodPointcutAdvisor:
正则表达式匹配方法切入点顾问。
名称匹配方法切入点顾问
NameMatchMethodPointcutAdvisor,即名称匹配方法切入点顾问。容器可根据配置文件中指定的方法名来设置切入点。
代码不用修改,只在配置文件中注册一个顾问,然后使用通知属性 advice 与切入点的方法名 mappedName 对其进行配置。代理中的切面,使用这个顾问即可。
举例: aop02_01 包。
对于切入点的指定,有多种方式:
正则表达式方法切入点顾问
RegexpMethodPointcutAdvisor,即正则表达式方法顾间。容器可根据正则表达式米设置切入点。注意,与正则表达式进行匹配的对象是接口中的方法名,而非目标类(接口的实现类)的方法名。
这里的正则表达式常用的运算符有三个,如下表:
网友评论