2014-12-06 55 views
0

注入EJB Bean的哪種方式更好?我有一個EJB:將EJB bean注入@Named或@ManagedBean的更好方法

@Stateless 
public class BrandModel implements BrandService { 
//... 
} 

,我有JSF @Named豆,在那裏我注入我的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; 
//... 
} 

或爲brandService創建BrandBean一個getter和使用這種方式:

@Named 
@SessionScoped 
public class ClotherBean implements Serializable { 

    @Inject 
    private BrandBean brandBean; 

    public void test(){ 
     brandBean.getBrandService().selectAll(); 
    } 

} 

是否有這兩種方法之間的差異?或者兩者都是一樣的?

+0

在我看來首先是更好的。在第二個例子中,您有額外的圖層 - BrandBean,並且無論是否需要BrandBean,都會在每個請求上創建垃圾。我的理解是BrandService是一個獨立的無狀態服務,因此可以在任何需要的地方使用它,而無需引入其他代理/委託人。 – Gas 2014-12-06 17:19:19

回答