【问题标题】:Prevent AOP proxying of some classes防止某些类的 AOP 代理
【发布时间】:2013-04-16 17:00:32
【问题描述】:

可以阻止某些类的 AOP 代理吗?

例如,当使用 Spring Security 中的 global-method-security 时。在这种情况下,我希望代理大多数带有注释的 bean。但是对于某些 bean,我已经在使用具有某些特殊语义的自定义代理。

任何想法表示赞赏!

【问题讨论】:

    标签: spring proxy spring-security aop


    【解决方案1】:

    我认为没有一个简单的方法可以做到。

    我看到两个选项:

    • 扩展 SecuredAnnotationSecurityMetadataSource 并覆盖 findAttributes() 方法。然后禁用secured-annotation 并使用metadata-source-ref 属性启用您自己的SecuredAnnotationSecurityMetadataSource。 (更简单,但仅适用于 Spring Security)

    • 其他(更通用的)方法是覆盖AbstractAutoProxyCreator 的shouldSkip() 方法,并使用Spring Security 注册的bean 定义上的setBeanClassName() 方法在BeanFactoryPostProcessor 中设置您自己的AutoproxyCreator,即AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME。对于这种方法,您需要注意您最终使用的AutoProxyCreator 的实现是什么(InfrastructureAdvisorAutoProxyCreator、AspectJAwareAdvisorAutoProxyCreator 或AnnotationAwareAspectJAutoProxyCreator)

    【讨论】:

    • 自从第一次提出问题以来,是否有任何改进/更改?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2019-06-01
    • 2021-10-03
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多