防止某些类的AOP代理

时间:2013-04-15 16:24:18

标签: spring proxy spring-security aop

某些类可以阻止AOP代理吗?

例如,从Spring Security使用global-method-security时。在这种情况下,我希望大多数带有注释的bean都被代理。但对于某些bean,我已经在使用具有某些特殊语义的自定义代理。

任何想法都赞赏!

1 个答案:

答案 0 :(得分:1)

我认为没有一种简单的方法可以做到。

我看到两个选项:

  • 扩展SecuredAnnotationSecurityMetadataSource并覆盖findAttributes()方法。然后停用secured-annotation并使用SecuredAnnotationSecurityMetadataSource属性启用您自己的metadata-source-ref。 (更简单,但仅适用于春季保障)

  • 其他(更通用)的方法是覆盖shouldSkip()的{​​{1}}方法,并使用AbstractAutoProxyCreatorAutoproxyCreator中设置您自己的BeanFactoryPostProcessor Spring Security注册的bean定义的方法,即setBeanClassName()。对于这种方法,您需要注意最终使用AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAMEAutoProxyCreatorInfrastructureAdvisorAutoProxyCreator

  • AspectJAwareAdvisorAutoProxyCreator实施方式