需要澄清JavaEE中的依赖注入

时间:2016-02-29 15:17:55

标签: java-ee dependency-injection

我试图清楚地了解分类/架构/语义/ JavaEE中整个依赖注入子系统的任何内容,我有点困惑。

我读过许多文章,规范和(部分)书籍,这就是我得到的:

  • 控制反转(IoC)是一种编程习惯
  • 依赖注入(DI)是IoC之后的模式(服务定位器是另一个例子)
  • 上下文和依赖注入(CDI)是一种Java服务,它通过一些其他功能(如上下文范围等)实现DI。
  • 资源注入通过@Resource注释是一种(老式的?只是不同的?)方式来注入在JNDI名称空间中注册的资源

我的问题是:

  1. 以前的任何一点是否有任何错误?
  2. 在这张“图片”中,@EBJ@PersistenceUnit@PersistenceContext ...注射在哪里?我的意思是,这些是一些注射机制,但它们不是资源注入,也不是CDI ......我是对的吗?它们是否属于某些特定的总括性术语,或者它们是在未经进一步分类的情况下刚刚添加的?

1 个答案:

答案 0 :(得分:1)

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

EJB和CDI紧密相关,因为EJB也是CDI bean,但要真正了解JaveEE技术之间的关系,您必须关注单个JSR规范。

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