Какой способ лучше вводить 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;
//...
}
или создать геттер в BrandBean
для brandService
и использовать его таким образом:
@Named
@SessionScoped
public class ClotherBean implements Serializable {
@Inject
private BrandBean brandBean;
public void test(){
brandBean.getBrandService().selectAll();
}
}
Есть ли разница между этими двумя подходами? Или оба пути одинаковы?
На мой взгляд, первый лучше. Во втором примере у вас есть дополнительный уровень - BrandBean и создание мусора по каждому запросу независимо от того, нужен ли BrandBean или нет. Я понимаю, что BrandService - независимая служба без состояния, поэтому используйте ее в любом месте, где она вам нужна, без введения другого прокси-сервера. – Gas