某些类可以阻止AOP代理吗?
例如,从Spring Security使用global-method-security
时。在这种情况下,我希望大多数带有注释的bean都被代理。但对于某些bean,我已经在使用具有某些特殊语义的自定义代理。
任何想法都赞赏!
答案 0 :(得分:1)
我认为没有一种简单的方法可以做到。
我看到两个选项:
扩展SecuredAnnotationSecurityMetadataSource
并覆盖findAttributes()
方法。然后停用secured-annotation
并使用SecuredAnnotationSecurityMetadataSource
属性启用您自己的metadata-source-ref
。 (更简单,但仅适用于春季保障)
其他(更通用)的方法是覆盖shouldSkip()
的{{1}}方法,并使用AbstractAutoProxyCreator
在AutoproxyCreator
中设置您自己的BeanFactoryPostProcessor
Spring Security注册的bean定义的方法,即setBeanClassName()
。对于这种方法,您需要注意最终使用AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME
,AutoProxyCreator
或InfrastructureAdvisorAutoProxyCreator
)
AspectJAwareAdvisorAutoProxyCreator
实施方式