對於某些類可以阻止AOP代理嗎?阻止某些類的AOP代理
例如使用Spring Security的global-method-security
。在這種情況下,我希望大多數具有註釋的bean都被代理。但是對於一些bean,我已經使用了具有特定語義的自定義代理。
任何想法讚賞!
對於某些類可以阻止AOP代理嗎?阻止某些類的AOP代理
例如使用Spring Security的global-method-security
。在這種情況下,我希望大多數具有註釋的bean都被代理。但是對於一些bean,我已經使用了具有特定語義的自定義代理。
任何想法讚賞!
我認爲沒有一個簡單的方法來做到這一點。
我看到兩個選項:
擴展SecuredAnnotationSecurityMetadataSource
和覆蓋findAttributes()
方法。然後禁用secured-annotation
並啓用您自己的SecuredAnnotationSecurityMetadataSource
和metadata-source-ref
屬性。 (更簡單,但只帶彈簧的安全工作)
其他(更通用)的方法是使用在Spring Security中,即註冊的bean定義的setBeanClassName()
方法覆蓋的AbstractAutoProxyCreator
的shouldSkip()
方法和設置自己的在BeanFactoryPostProcessor
AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME
。對於這種方法,你需要什麼樣的AutoProxyCreator
實現你最後用(InfrastructureAdvisorAutoProxyCreator
,AspectJAwareAdvisorAutoProxyCreator
或AnnotationAwareAspectJAutoProxyCreator
)