我目前正在学习新的Java 6组件模型,并且对最新的依赖注入机制感到困惑。以下是我的问题:
1) @Inject和@EJB有什么区别?
2)如果我有一个简单的POJO,其中包含另一个POJO(其中哪一个是DAO代码),那么更好的选择是:@Inject还是@EJB?
我可以混合@Inject和@EJB吗?
一个例子是:
ClassA_Adaptor
ClassB的实例,以及一个#EN2#将使用JPA2.0的实例。
我想注入它们,包括DAO和WebService。
3)只对某些操作使用事务性操作,而不是对所有操作使用事务性操作,这是否是一种糟糕的方法?
例如: DAO_ClassB中的一些方法是典型的查询,而其他方法是“写”方法。不用事务包装"READ“方法不好吗?
据我理解,DAO_ClassB可以使用@ DAO_ClassB (注入DAO_ClassB并使所有方法都是事务性的)与事务一起包装。我怎么能控制它?
抱歉,如果有些问题令人困惑,因为我只知道Java 6新组件模型的一些部分。
发布于 2011-05-08 19:58:57
发布于 2014-05-06 03:11:30
您可以使用这两个注释注入EJB。从@Inject开始,如果遇到任何问题,请切换到@EJB。
@Inject does not have any methods / attributes--it is just a plain annotation:
@Target(value = {ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
public @interface Inject {
}
另一方面,@EJB注释允许您传递其他信息,这些信息对于引用远程EJB或不能以“约定而非配置”样式简单注入的EJB非常有用:
@Target(value = {ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface EJB {
public String name() default "";
public String beanName() default "";
public Class beanInterface() default Object.class;
public String mappedName() default "";
}
发布于 2011-05-08 21:22:42
。
https://stackoverflow.com/questions/5889767
复制相似问题