在我的Web应用程序中,我有一个由几个jsf-viewscoped和一些requestcoped bean组成的表示层。通常我只想在这些中使用表示逻辑,所以每当有一个超出表示逻辑的任务时,我就会使用另一个Bean或EJB。所以在一些视图中的Bean中我注入了一个EJB。我现在的问题如下:我是否应该避免将EJB直接注入到用于表示的Bean中的情况,方法是创建另一个(例如应用程序作用域)bean,它只将方法调用委托给相应的EJB? 并且:注入的EJB何时初始化?如果它在bean初始化期间被初始化它被注入,那么这意味着对于我的应用程序的每个访问者,总是还保留一个EJB?我认为不是这种情况,而是仅在调用其中一个方法时使用EJB。但是,我应该如何正确地分离业务层和表示层?
答案 0 :(得分:2)
将EJB注入视图范围的辅助bean是常见的,也是最佳实践。
(视图作用域)支持bean处理任何与视图相关的问题,并将其委托给EJB bean以用于业务逻辑。
视图bean通常(但不一定)从其PostConstruct中的EJB bean加载数据,然后在回发期间保留它。这对性能和一致性都非常有益。