java - 非bean对象中的EJB CDI注入(inject)?

标签 java javabeans cdi code-injection

我有

@Named("bean1")
@javax.enterprise.context.SessionScoped
public class Bean1 implements Serializable {
    // ...
}

@Named("bean2")
@javax.enterprise.context.SessionScoped
public class Bean2 implements Serializable {
    private SomeClass object = new SomeClass();
}

public class SomeClass {
    @Inject
    private Bean1 injBean;
}

我的问题:

1) Bean2 是 session 范围的。 Bean2.object 有哪些范围?
2)为什么someClass中的注入(inject)不起作用?谢谢。

最佳答案

1) Bean2 is session scoped. Which scope does Bean2.object have?

嗯,Bean2.object 只是 Bean2 实例内的一个对象,因此没有任何 CDI 范围。

2) Why does the injection in someClass not work? Thanks.

至少有两个原因:

  • someClass (顺便说一句,检查命名约定)不是 CDI 托管 bean
  • Bean2.object 引用的对象不是由 CDI 创建的,因此 CDI 甚至不知道该实例存在。

要解决这个问题,请将 someClass 设为托管 Bean,并让 CDI 将实例注入(inject)到 Bean2.object 中。

关于java - 非bean对象中的EJB CDI注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24940345/

相关文章:

java - 使用适用于 Android 的 Quizlet API

java - 修改 Arraylist 中的所有值

java - 当拦截器存在时,EJB 注入(inject)失败

jsf - Weld + GF4 + SessionScoped : Sometimes wrong bean?

java - 使用 gradle 对带有嵌入式 glassfish 的 jar 进行容器测试失败

java - 为什么这个java进程不释放内存?

java - 如何将 Long 列表发送到休息 Controller Spring Boot

java - 将存储在字符串值中的 java 类 macaddress.java 输出传输到 LOGINPAGE.jsp 中的隐藏文本字段 MAC

Xpages bean 与对象数据

jasper-reports - 如何在 iReport 中打印包含在另一个列表中的字符串列表?