Skip to content

重复代理问题 #994

Closed
Closed
@zhang0001

Description

@zhang0001
版本号:

几个版本都有

问题描述:

shiroConfig 中defaultAdvisorAutoProxyCreator 导致有2个AutoProxyCreator ,另一个AnnotationAwareAspectJAutoProxyCreator,有 @Cacheable @transactional 的 类 A 被AnnotationAwareAspectJAutoProxyCreator生成代理类后PorxyB,该类PorxyB又被 defaultAdvisorAutoProxyCreator 再次生成代理类PorxyC,调用A的时候先调用ProxyC 再由ProxyC调用ProxyB, @Cacheable @transactional 都被执行两次,而且造成 @Cacheable @transactional 的优先级高于ProxyB 上AnnotationAwareAspectJAutoProxyCreator 生成的其他注解
image

截图&代码:

image

友情提示: 未按格式要求发帖,会直接删掉。

Activity

zhang0001

zhang0001 commented on Mar 27, 2020

@zhang0001
Author

目前的解决方法就是让 defaultAdvisorAutoProxyCreator 不匹配任何注解就行

zhang0001

zhang0001 commented on Mar 28, 2020

@zhang0001
Author

可以 修改 ShiroConfig
/**
* 下面的代码是添加注解支持
* @return
*/
@bean
@dependsOn("lifecycleBeanPostProcessor")
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
//添加前缀判断 不匹配 任何Advisor
defaultAdvisorAutoProxyCreator.setUsePrefix(true);
defaultAdvisorAutoProxyCreator.setAdvisorBeanNamePrefix("_no_advisor");
return defaultAdvisorAutoProxyCreator;
}

zhangdaiscott

zhangdaiscott commented on Apr 28, 2020

@zhangdaiscott
Member

感谢

ssssshql

ssssshql commented on Aug 26, 2024

@ssssshql

你好,我发现这个导致我@RequiresPermissions验证不了权限,一直为无权限。注释掉这个就ok。。。请问如何解决

zhangdaiscott

zhangdaiscott commented on Aug 26, 2024

@zhangdaiscott
Member

你是不是shrio排除了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @zhangdaiscott@zhang0001@ssssshql

        Issue actions

          重复代理问题 · Issue #994 · jeecgboot/JeecgBoot