Browse Source

增强代理提取.

https://github.com/baomidou/mybatis-plus/issues/5969
nieqiurong 1 year ago
parent
commit
e928332967

+ 3 - 3
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/impl/ServiceImpl.java

@@ -92,11 +92,11 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
                     Object target = this.baseMapper;
                     Object target = this.baseMapper;
                     // 这个检查目前看着来说基本上可以不用判断Aop是不是存在了.
                     // 这个检查目前看着来说基本上可以不用判断Aop是不是存在了.
                     if (com.baomidou.mybatisplus.extension.toolkit.AopUtils.isLoadSpringAop()) {
                     if (com.baomidou.mybatisplus.extension.toolkit.AopUtils.isLoadSpringAop()) {
-                        if (AopUtils.isAopProxy(this.baseMapper)) {
-                            target = AopProxyUtils.getSingletonTarget(this.baseMapper);
+                        while (AopUtils.isAopProxy(target)) {
+                            target = AopProxyUtils.getSingletonTarget(target);
                         }
                         }
                     }
                     }
-                    if (target != null) {
+                    if (target instanceof MybatisMapperProxy) {
                         MybatisMapperProxy mybatisMapperProxy = (MybatisMapperProxy) Proxy.getInvocationHandler(target);
                         MybatisMapperProxy mybatisMapperProxy = (MybatisMapperProxy) Proxy.getInvocationHandler(target);
                         SqlSessionTemplate sqlSessionTemplate = (SqlSessionTemplate) mybatisMapperProxy.getSqlSession();
                         SqlSessionTemplate sqlSessionTemplate = (SqlSessionTemplate) mybatisMapperProxy.getSqlSession();
                         this.sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();
                         this.sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/issues/aop/MultiAopTest.java

@@ -17,7 +17,7 @@ import java.util.List;
  * @author nieqiurong
  * @author nieqiurong
  */
  */
 @ExtendWith(SpringExtension.class)
 @ExtendWith(SpringExtension.class)
-@ContextConfiguration(classes = {AppConfig.class, AopConfig2.class})
+@ContextConfiguration(classes = {AppConfig.class, AopConfig1.class, AopConfig2.class})
 public class MultiAopTest {
 public class MultiAopTest {
 
 
     @Autowired
     @Autowired