2016-02-29 169 views
2

我试图让分类/结构/语义/任何有关的JavaEE全依赖注入子系统,我有点糊涂了明确的高层次的理解依赖注入。需要澄清有关的JavaEE

我已经看了很多文章,规格和书籍(的部分),而这是我得到:

  • 控制反转(IoC)是一种编程实践
  • 依赖注入(DI)是一个遵循IoC(服务定位器是另一个示例)的模式
  • 上下文和依赖注入(CDI)是一种Java服务,它实现了DI以及一些附加功能l IKE上下文范围等
  • 资源注射经由@Resource注解为(老式?只是不同)的方式注入JNDI名称空间中注册的资源

我的问题是:

  1. 以任何方式任何先前点错了吗?
  2. 在这个 “图片”,你在哪里@EBJ@PersistenceUnit@PersistenceContext ...注射搭配自己?我的意思是,这些是一些注射机制,但他们不是资源注射,也不是CDI ......我说得对吗?它们是否属于一些特定的总括术语,或者他们刚刚在没有进一步分类的情况下添加?
+0

EJB = Enterprise Java Beans,@Persistence注释是指JPA;都是其他规格,总是与JSR规范(CDI是JSR 346),以了解情况 – fantarama

+0

@fantarama我知道代表什么EJB和JPA的,我在问如何诠释这些相关的“DI Java生态系统”。 –

+0

由于此注释是在其他规格中定义的,因此它们与CDI无关。完整的Java EE 7规范提供了所有这个jsr,因此jee7实现必须实现所有这一切。正如我所说的看单独的jsr来查看上下文和关系(如EJB事务传播到CDI bean) – fantarama

回答

1

@EJB是Enterprise Java Beans注释,@Persistence注释是指JPA。 两者都在不同的JSR上定义,因此具有不同于CDI的目的,如果两者都使用IoC模式。

EJB和CDI都紧密联系在一起,因为一个EJB也是一个CDI豆,但要真正了解你必须专注于单一的JSR规范JaveEE技术之间的关系。

例如JPA是Spring Hibernate实现的独立规范,与CDI无关,但在JavaEE上下文中,您可以使用实体驱动域模式并使JPA实体也是CDI bean。