【问题标题】:Can Panache entities be used in non Quarkus managed services?Panache 实体可以在非 Quarkus 托管服务中使用吗?
【发布时间】:2020-11-10 15:40:02
【问题描述】:

使用 Quarkus 1.9.1

我有一个命令行应用程序如下...

@CommandLine.Command
public class MyCommandApp {}

应用程序使用第 3 方库启动服务器连接。 在某些时候,当服务器接受连接时,它会动态附加一个侦听器。例如:

if(server.accept())
    server.setListener(new MyServerListener())

在 MyServerListener() 中我可以使用这样的华丽实体吗?

// This is attached dynamically. There's no Quarkus CDI scope/context to this.
class MyServerLister implements ServerListener {
    @Override
    public void receiveEvent(Event event) {
        MyPanacheEntity.find(...)
        ...
    }

}

【问题讨论】:

    标签: quarkus quarkus-panache


    【解决方案1】:

    Panache 实体应该可以在非 CDI bean 上使用。如果不是这种情况,请使用小型复制器打开问题。

    但 Panache 只能用于 Quarkus 应用程序,因为它依赖于 Quarkus 构建时增强功能。

    无论如何,如果您想在其中使用 Quarkus CDI 的全部功能,您始终可以将您的 MyServerLister 设为 CDI bean,并将其注入您的 MyCommandApp 并将其传递到您的 MyServerLister 构造函数中。

    【讨论】:

    • 如何使它成为 CDI bean?我不能只把@ApplicationScoped 放在课堂上吗?如果您看到我的示例,当客户端连接到服务器时,会动态创建和附加侦听器。所以不能在启动时注入。
    • 我刚刚了解到您的客户有一个听众。如果它不能共享,那么是的,你不能轻易地把它变成一个 CDI bean。 Panache 可以在非 CDI bean 上使用,但需要一个请求范围,因此它不能在 OOTB 上工作,有关更多信息,请参阅此 Zulip 线程quarkusio.zulipchat.com/#narrow/stream/187030-users/topic/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多