将EJB bean注入@Named或@ManagedBean的更好方法

时间:2014-12-06 15:53:10

标签: jsf java-ee dependency-injection ejb

哪种方式更适合注入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();
    }

}

这两种方法有区别吗?或者两者都是一样的?

1 个答案:

答案 0 :(得分:0)

无论哪种方式都可以接受。但是因为Java 6+ @Inject是首选。无论您使用什么AS,行为都必须相同。以下是关于这个问题的更多信息:

http://germanescobar.net/2010/04/4-areas-of-possible-confusion-in-jee6.html