是否可以将请求范围的CDI bean注入无状态会话bean?
我曾经问了一个相关的问题,并认为具体的CDI @RequestScoped @Stateless问题值得自己发帖.
在EJB方法/ @RequestScoped和@Stateless之间传递状态
我还问了一个关于JMS @MessageDriven bean的类似问题 - 基本上想要了解@Stateless的相同内容.
我想有一个会话作用域的JSF bean与一个请求(页面)作用域的属性.有可能吗?
我的代码库中有以下场景:
//this bean, which will be injected,
//is not annotated
public class HelperUtil {
//only default constructor with no args
public void doThis(String _in) {
//...
}
public void doThat() {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
在下面的课程中我们进行注射:
@Named
@Stateless
public class BusinessManager {
@PersistenceContext(unitName = "default")
private EntityManager em;
@Inject
private HelperUtil helperUtil ;
//...
}
Run Code Online (Sandbox Code Playgroud)
Q1: 何时HelperUtil通过调用默认构造函数实际初始化实例?当注入它的第一个客户端(例如BusinessManager)在应用服务器(在我的情况下JBoss)启动时被实例化(并且由于它被注释为将由容器初始化),它是否已完成@Stateless?
Q2: 在上面的展览中,只要没有客户端以外的客户端通过直接调用构造函数而不是通过?获取实例来请求实例,它将HelperUtil保持不变?singletonDI
问题3: 使用DI的优势是什么?@Inject在这种情况下直接调用构造函数(HelperUtil helper = new HelperUtil();)?