gpt4 book ai didi

java - 有没有办法使用接口(interface)在代码中注入(inject)依赖项?

转载 作者:行者123 更新时间:2023-11-30 03:32:49 34 4
gpt4 key购买 nike

我想在我的代码中获取对某些无状态 bean 的引用。问题是我只知道它正在实现的接口(interface)(我不知道名称、类名或任何其他)。

通常对于任何其他 EJB,我会使用带有接口(interface)的 @EJB 注释

private @EJB MyInt myInt;

有谁知道是否可以通过代码获取它,例如:

MyInt myInt = new InitialContext().lookuup(MyInt.class);

最佳答案

不幸的是,如果同一个接口(interface)有多个实现,则需要指定所需的实现。因此,您将需要实现的映射名称,或者您将需要 JNDI 名称才能像这样查找它。您的应用程序服务器管理员应该能够为您提供 JNDI 名称。

如果您想在运行时交换实现,那么您不能使用注入(inject)。您必须执行 JNDI 查找。我们构建了一个小工厂,通过从数据库中的配置表获取 JNDI 名称来查找无状态 session bean。这使您能够通过更改数据库表中的 JNDI 名称来换出实现。这是我们的 bean 查找方法的示例:

public static Object getBean(String jndiName) throws NamingException {
Object bean = null;
Context ctx = new InitialContext();
bean = ctx.lookup(jndiName);
return bean;
}

我希望这有帮助。 :)

关于java - 有没有办法使用接口(interface)在代码中注入(inject)依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28629151/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com