注入EJB Bean哪种方式更好?我有一个EJB:
@Stateless
public class BrandModel implements BrandService {
//...
}
我有JSF @Named
bean,我注入了我的EJB:
@Named
@RequestScoped
public class BrandBean implements Serializable {
@EJB
private BrandService brandService;
//...
}
但是如果我创建一个新的@Named
或@ManagedBean
,例如ClotherBean
,我将需要使用EJB BrandModel
,哪种方式更适合注入EJB?这个:
@Named
@SessionScoped
public class ClotherBean implements Serializable {
@EJB
private BrandService brandService;
//...
}
或者在BrandBean
为brandService
创建一个getter并以这种方式使用它:
@Named
@SessionScoped
public class ClotherBean implements Serializable {
@Inject
private BrandBean brandBean;
public void test(){
brandBean.getBrandService().selectAll();
}
}
这两种方法有区别吗?或两者都是一样的?
无论哪种方式都可以接受。但是因为Java 6+ @Inject是首选。无论您使用什么AS,行为都必须相同。以下是关于这个问题的更多信息:
http://germanescobar.net/2010/04/4-areas-of-possible-confusion-in-jee6.html