diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java index f89e0399ae1d..465d713aa798 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java @@ -178,7 +178,11 @@ protected TransactionAttribute computeTransactionAttribute(Method method, @Nulla } // Second try is the transaction attribute on the target class. - txAttr = findTransactionAttribute(targetClass != null ? targetClass : specificMethod.getDeclaringClass()); + Class specificTargetClass = method.getDeclaringClass(); + if (targetClass != null) { + specificTargetClass = ClassUtils.getUserClass(targetClass); + } + txAttr = findTransactionAttribute(specificTargetClass); if (txAttr != null && ClassUtils.isUserLevelMethod(method)) { return txAttr; }