特定のクラスで AOP プロキシを防止できますか?
たとえばglobal-method-security、Spring Security から使用する場合。この場合、注釈付きのほとんどの Bean をプロキシする必要があります。しかし、一部の Bean では、特定の特別なセマンティクスを持つカスタム プロキシを既に使用しています。
どんなアイデアでも大歓迎です!
特定のクラスで AOP プロキシを防止できますか?
たとえばglobal-method-security、Spring Security から使用する場合。この場合、注釈付きのほとんどの Bean をプロキシする必要があります。しかし、一部の Bean では、特定の特別なセマンティクスを持つカスタム プロキシを既に使用しています。
どんなアイデアでも大歓迎です!
それを行う簡単な方法はないと思います。
2 つのオプションが表示されます。
メソッドを拡張SecuredAnnotationSecurityMetadataSourceしてオーバーライドしますfindAttributes()。次に、属性を使用secured-annotationして独自の無効化と有効化を行います。(より単純ですが、春のセキュリティでのみ動作します)SecuredAnnotationSecurityMetadataSourcemetadata-source-ref
他の(より一般的な)方法は、メソッドをオーバーライドし、Spring Security によって登録された Bean 定義のメソッドを使用して独自のメソッドを設定することshouldSkip()です。このアプローチでは、最終的にどの実装を使用するかについて注意する必要があります ( 、または)AbstractAutoProxyCreatorAutoproxyCreatorBeanFactoryPostProcessorsetBeanClassName()AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAMEAutoProxyCreatorInfrastructureAdvisorAutoProxyCreatorAspectJAwareAdvisorAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator