我想知道以下两种解决方案中的哪一种是最佳实践?
问题:我有一个无状态会话 bean VehicleBean,我实现了一个具有业务逻辑和持久性 Car 及其轮子、轮胎等的方法。
@Stateless
class VehicleBean{
@PersistenceContext
private EntityManager em;
@EJB
Inspector inspectorBean;
@EJB
DocumentBean documentBean;
public void persistCar(){
Car car = new Car();
car.setMake("Ford");
em.persist(car);
documentBean.persistDocument(new Document(car));
for (int i = 0; i < 4; i++){
createWheel(car);
}
private void createWheel(Car car){
// some business logic
inspectorBean.inspect();
Wheel wheel = new Wheel();
wheel.setCar(car);
em.persist(wheel);
...
}
...
}
我有不同的私有方法,它们相互调用(1)创建汽车,2)创建轮子等),我想将所有这些方法重新组合到一个辅助类中。
解决方案:
1) 使用一个帮助类 CarBuilder,它包含我的 VehicleBean 中的所有私有方法。由于我不能使用 ejb 注入,我想通过引用构造函数来传递它,如下所示:
public void persistCar(){
new CarBuilder(this, document, inspectorBean);
}
class CarBuilder{
private VehiculeBean vehiculeBean;
...
CarBuilder(VehiculeBean,....){
this.vehiculeBean = vehiculeBean;
}
}
2) 创建 CarBuilder 作为无状态会话 bean 并将 bean 注入 VehiculeBean。
您看到使用 2) 有什么优势吗?所以有很多不同的 bean,比如 CarBuilder、MotorcyleBuilder 等由容器管理。