【发布时间】:2011-10-21 23:11:59
【问题描述】:
我一直在这里搜索,但没有找到答案。
在我的应用程序中,我有一个用于控制器的抽象主类,其中包含一些方法和属性。我想自动注入 DAO。
abstract class AbstractController<E extends AbstractEntity, D extends AbstractDAO<E>> {
@Inject
private D dao;
// getters and setters
}
abstract class AbstractDAO<E extends AbstractEntity> {
@PersistentContext
private EntityManager em;
// finds returns E
}
// implemenation/usage
class CarController extends AbstractController<Car, CarDAO> {
}
获取异常:
org.jboss.weld.exceptions.DefinitionException: WELD-001407 Cannot declare an injection point with a type variable: [field] @Inject private AbstractController.dao
使用:Glassfish 3.1 和 JSF 2.1。
是否有解决方法或替代方法?
谢谢。
【问题讨论】:
-
D是 EJB(托管 bean)吗? -
使用 EJB 会话托管 bean(无状态或有状态),我可以使用 InitialContext.lookup 将实例获取到 get 方法中。但我想使用像@Dependent 这样的注入。你有更好的主意吗?
-
Guice 能够处理这种事情。
-
现在,我将这些 DAO 用作有状态会话 bean,并通过上下文查找获取实例。