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