【发布时间】:2018-06-01 18:30:01
【问题描述】:
我有一个带有非默认构造函数的通用 DAO,看起来像这样(实际上与车辆无关,我只是想提供一个简单的示例)
public class GenericVehicleDao<T extends Vehicle> {
private Class<T> clazz;
@Inject
private DaoHelper daoHelper;
public GenericDao(Class<T> clazz)
{
this.clazz = clazz;
}
}
我有另一个类,其中包含一些使用此构造函数的 @Produces 方法,例如
public class AppProducer {
@Produces
public GenericDao<Car> createCar() {
return new GenericDao(Car.class);
}
@Produces
public GenericDao<Truck> createTruck() {
return new GenericDao(Truck.class);
}
}
然后我可以将该 DAO 注入到服务层,例如。
@Stateless
public class VehicleService {
@Inject
private GenericVehicleDao<Car> carDao;
}
Car DAO 可以很好地注入服务层,但是我发现在构建 DAO 后,注入的 DAO DaoHelper 为空。如果我将 DaoHelper 注入到服务层然后注入很好,但是我宁愿在 DAO 本身中进行注入。我曾尝试从字段注入切换到 setter 注入,但我遇到了同样的问题。
【问题讨论】:
标签: jakarta-ee dependency-injection cdi jboss-weld