2

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

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

任何想法表示赞赏!

4

1 回答 1

1

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

我看到两个选项:

  • 扩展SecuredAnnotationSecurityMetadataSource和覆盖findAttributes()方法。然后使用该属性禁用secured-annotation和启用您自己的。(更简单,但仅适用于弹簧安全)SecuredAnnotationSecurityMetadataSourcemetadata-source-ref

  • 其他(更通用的)方法是使用Spring Security 注册的 bean 定义上的shouldSkip()方法覆盖AbstractAutoProxyCreator并设置您自己AutoproxyCreator的方法,即. 对于这种方法,您需要注意您最终使用的是什么实现 ( ,或)BeanFactoryPostProcessorsetBeanClassName()AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAMEAutoProxyCreatorInfrastructureAdvisorAutoProxyCreatorAspectJAwareAdvisorAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator

于 2013-04-16T09:00:32.703 回答