-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
框架调用从业务补偿方法时spring注入类丢失问题 #412
Comments
我从业务通过Feign调用的,从业务获取 TransactionContext 上下文都没问题的,就是Bean注入类都变成null了 |
问题指正:应该是框架创建代理类时注入依赖有问题,不是没问题 |
临时解决方法: 1、工具类:
} 2、在补偿方法中使用方式: pointAccountService 原先是通过 @Autowired 注解来注入的,引入框架后在补偿方法中失效了,为 null。 |
tcc-transaction github 仓:"created_at": "2015-12-05T04:27:53Z", 2016年当时国内最好的 TCC 框架。 Seata github 仓:"created_at": "2018-12-28T08:37:22Z", 之后 Seata 等后来者追上。 |
1 similar comment
tcc-transaction github 仓:"created_at": "2015-12-05T04:27:53Z", 2016年当时国内最好的 TCC 框架。 Seata github 仓:"created_at": "2018-12-28T08:37:22Z", 之后 Seata 等后来者追上。 |
TCC补偿时target对象的获取是通过类名,从spring容器中拿的。所以需要把使用了@Compensable注解的方法所在的类注册到spring容器中。如果是基于feign来传递上下文的话,可以参考tcc-transaction-http-sample中的实现。如果还有问题,建议提供下复现方式。 |
public final class Terminator {
private Terminator() {
}
}
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();
The text was updated successfully, but these errors were encountered: