可以阻止某些类的 AOP 代理吗?
例如global-method-security
从 Spring Security 使用时。在这种情况下,我希望代理大多数带有注释的 bean。但是对于某些 bean,我已经在使用具有某些特殊语义的自定义代理。
任何想法表示赞赏!
可以阻止某些类的 AOP 代理吗?
例如global-method-security
从 Spring Security 使用时。在这种情况下,我希望代理大多数带有注释的 bean。但是对于某些 bean,我已经在使用具有某些特殊语义的自定义代理。
任何想法表示赞赏!
我认为没有一个简单的方法可以做到这一点。
我看到两个选项:
扩展SecuredAnnotationSecurityMetadataSource
和覆盖findAttributes()
方法。然后使用该属性禁用secured-annotation
和启用您自己的。(更简单,但仅适用于弹簧安全)SecuredAnnotationSecurityMetadataSource
metadata-source-ref
其他(更通用的)方法是使用Spring Security 注册的 bean 定义上的shouldSkip()
方法覆盖AbstractAutoProxyCreator
并设置您自己AutoproxyCreator
的方法,即. 对于这种方法,您需要注意您最终使用的是什么实现 ( ,或)BeanFactoryPostProcessor
setBeanClassName()
AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME
AutoProxyCreator
InfrastructureAdvisorAutoProxyCreator
AspectJAwareAdvisorAutoProxyCreator
AnnotationAwareAspectJAutoProxyCreator