springboot使用Thrift时,遇上抽象类要实例化的问题

发布于 2022-09-05 14:52:27 字数 727 浏览 33 评论 0

两个springboot的web应用,使用Thrift来调用,一个是“服务端”,另一个是“客户端”。
持久层方面,使用了JPA。

“客户端”通过Thrift来调用“服务端”的函数(transmitData)时,我需要通过JPA来将数据写入数据库,这时报了个空指针错误,我发现,如下:

@Controller
public class TransmitServiceImpl implements TransmitService.Iface
{
    @Autowired
    private ITransactionDataRepository TransactionDataRepository;//注入(实际情况是null)
    
    ...
    
    @Override
    public boolean transmitData(TransactionData transData) throws TException//通过Thrift调用的函数
    {
        ...
        TransactionDataRepository.save(...);//写入持久层(此时报空指针错误)
        ...
    }
}

服务端Controller中TransactionDataRepository竟然是Null的。

后来我上午查资料,听说此时无法注入,只能通过new的方式。但是ITransactionDataRepository是抽象的,我无法实例化,这时候应该怎么处理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青丝拂面 2022-09-12 14:52:27

如果整个ApplicationContext中没有ITransactionDataRepository的Bean,那么在启动时就会报无法找到ITransactionDataRepository Bean的错误,而不是在运行时报错。

怀疑你的TransmitServiceImpl是你自己new出来的,不是通过ApplicationContext构建的。

Thrift不懂希望下面两个链接对你有帮助:

九歌凝 2022-09-12 14:52:27

你的Service层 是不是加了事物@transactional 把事物去掉就好了 原因暂不明

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文