-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Open
Description
public final class Terminator {
private Terminator() {
}
public static Object invoke(TransactionContext transactionContext, Invocation invocation, Class<? extends TransactionContextEditor> transactionContextEditorClass) {
if (StringUtils.isNotEmpty(invocation.getMethodName())) {
Object target = FactoryBuilder.factoryOf(invocation.getTargetClass()).getInstance();
Method method = null;
try {
method = target.getClass().getMethod(invocation.getMethodName(), invocation.getParameterTypes());
} catch (NoSuchMethodException var12) {
throw new SystemException(var12);
}
((TransactionContextEditor)FactoryBuilder.factoryOf(transactionContextEditorClass).getInstance()).set(transactionContext, target, method, invocation.getArgs());
Object var5;
try {
var5 = method.invoke(target, invocation.getArgs());
} catch (InvocationTargetException | IllegalAccessException var10) {
throw new SystemException(var10);
} finally {
((TransactionContextEditor)FactoryBuilder.factoryOf(transactionContextEditorClass).getInstance()).clear(transactionContext, target, method, invocation.getArgs());
}
return var5;
} else {
return null;
}
}
}
Springboot 版本:2.3.5.RELEASE
TCC 版本:2.0.1
框架通过 Terminator 调用以下反射方法执行补偿逻辑时,因为 target 类中spring注入的Bean都是null,所以执行业务方法时报空指针异常,这个问题如何解决?
var5 = method.invoke(target, invocation.getArgs());
再往上看,应该是框架创建代理类时注入依赖没有问题,框架的问题望高手指点?
Object target = FactoryBuilder.factoryOf(invocation.getTargetClass()).getInstance();
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels