我目前正在学习新的 Java EE 6 组件模型,并且对最新的依赖注入机制感到困惑。所以这是我的问题:
1)@Inject 和@EJB 有什么区别
2) 如果我有一个包含另一个 POJO(其中一个是 DAO 代码)的简单 POJO,那么更好的选择是:@Inject 还是 @EJB?
我可以混合使用@Inject 和@EJB 吗?
一个例子是:
ClassA 实现 InterfaceA 并具有 ClassA_Adaptor 的实例
ClassA_Adaptor 实现 InterfaceAB 并具有 ClassB 的实例
ClassB 实现 InterfaceB 并具有 ClassB_Adaptor 的实例和 DAO_ClassB 的实例
ClassB_Adaptor 实现 InterfaceB 并具有 ClassC 的实例
ClassC 实现 InterfaceBC 并具有 WebService_ClassC 的实例
DAO_ClassB 将使用 JPA 2.0 (@PersistenceContext)
我想注入所有这些,包括 DAO 和 WebService。
3) 只对某些操作使用事务性而不是对所有操作,这是一种不好的方法吗?
例如:DAO_ClassB 中的某些方法是您的典型查询,而其他方法是“写入”方法。不使用事务包装“READ”方法是不是很糟糕?
据我了解,DAO_ClassB 可以使用 @EJB 与事务一起包装(注入 DAO_ClassB 并使所有方法都具有事务性)。我该如何控制它?
抱歉,如果有些问题令人困惑,因为我只知道 Java EE 6 新组件模型的零碎部分。