特定のクラスで AOP プロキシを防止できますか?
たとえばglobal-method-security
、Spring Security から使用する場合。この場合、注釈付きのほとんどの Bean をプロキシする必要があります。しかし、一部の Bean では、特定の特別なセマンティクスを持つカスタム プロキシを既に使用しています。
どんなアイデアでも大歓迎です!
特定のクラスで AOP プロキシを防止できますか?
たとえばglobal-method-security
、Spring Security から使用する場合。この場合、注釈付きのほとんどの Bean をプロキシする必要があります。しかし、一部の Bean では、特定の特別なセマンティクスを持つカスタム プロキシを既に使用しています。
どんなアイデアでも大歓迎です!
それを行う簡単な方法はないと思います。
2 つのオプションが表示されます。
メソッドを拡張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