网站大量收购独家精品文档,联系QQ:2885784924

AOP之Pointcut、Advisor.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AOP之Pointcut、Advisor

AOP之Pointcut、Advisor 上篇的所定义的Advice都是直接织入至代理接口执行前后的,或者在执行方法过程中出现异常的时候织入。事实上还有更加细致的织入时机。Pointcut定义了感兴趣的Jointpoint(Advice的应用时机)。在spring中,使用PointcutAdvisor提供的Pointcut实例,具体结合Advice,Spring内建的Pointcut都有对应的PointcutAdvisor。 官方文档解释:在Spring里,一个advisor是一个仅仅包含一个通知对象和与之关联的切入点表达式的切面。 除了引入这种特殊形式,任何advisor都可以和任何通知一起工作。 org.springframework.aop.support.DefaultPointcutAdvisor是最常用的advisor类。 例如,它可以和: MethodInterceptor,BeforeAdvice 或者 ThrowsAdvice一起使用。 在Spring里有可能在同一个AOP代理里模糊advisor和通知类型。 例如,你可以在一个代理配置里使用一个interception环绕通知,一个异常通知和一个前置通知:Spring将负责自动创建所需的拦截器链。 我的通俗解释:就是将一个advice和对应不同的规则进行匹配,就是将advice给包装升级了,使用的时候和advice一样使用 ?1、NameMatchMethodPointcoutAdvisor(这里是一个织入时机的更加细致的处理,通过名字来对应,这样很明显的一个好处就是,我可以针对要代理类中的部分方法进行织入,而不是每个方法都进行织入) view plaincopy to clipboardprint? bean id=beforeAdvice class=com.itcast.advice.LogBeforeAdvice/bean? bean id=afterAdvice class=com.itcast.advice.LogAfterAdvice/bean? bean id=helloProxy class=org.springframework.aop.framework.ProxyFactoryBean? property name=target ref=helloSpeaker/property? property name=interceptorNames? ?list? ?valuehelloAdvise/value? ?/list? /property? /bean? !--helloAdvise的名字匹配的方式来匹配要进行advice处理的方法--? bean id=helloAdvise class=org.springframework.aop.support.NameMatchMethodPointcutAdvisor? property name=mappedName value=hello*/property? property name=advice ref=beforeAdvice/property? /bean? bean id=beforeAdvice class=com.itcast.advice.LogBeforeAdvice/bean bean id=afterAdvice class=com.itcast.advice.LogAfterAdvice/bean bean id=helloProxy class=org.springframework.aop.framework.ProxyFactoryBean property name=target ref=helloSpeaker/property property name=interceptorNames ?list ?valuehelloAdvise/value ?/list /property /bean !--helloAdvise的名字匹配的方式来匹配要进行advice处理的方法-- bean id=helloAdvise class=org.springframework.aop.support.NameMatchMethodPointcutAdvisor property name=mappedName value=hello*/property property name=advice ref=beforeAdvice/property /bean 或者还可以定义成如下方式: view plaincopy to clipboardprint? !--helloAdvise直接指定要引入的advice方法的那些类文件中的具体方法列表--?

您可能关注的文档

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档