2011-06-11 31 views
0

我正在寻找一些关于CDI API的帮助。如果我的问题看起来很天真,我很抱歉,我试着在网上查找一些关于CDI API的高级描述,但是无法做到。JBoss cdi-api使用

javadoc说:

上下文和依赖注入(CDI)定义了一组互补的服务,帮助提高应用程序代码的结构。

我的问题是在EJB 3.X中,我们已经有了帮助DI和注入像PersistenceContext和其他资源资源的注解。那么CDI API究竟有哪些用处呢?在使用J2SE的纯Web应用程序/独立Java程序中?

回答

2

EJB 3.0自带的资源和EJB级依赖注入 - 这是很酷已经:-)

CDI做什么(这是更酷) - 它降低了障碍,依赖注入所谓的“被管理的bean”(JSR 316) - (其中包括)定义了类需要从依赖注入中受益的最小前置条件集。稍微简化一下,可以说CDI项目中的所有类都是托管bean,因此可以用于DI。

要总结一下CDI在DI方面拥有超过EJB 3.0:

  • 你不需要的EJB了,CDI基本使用POJO的作品。这是真正轻量级的,因为它允许您在需要时使用EJBs EJB,而不是在需要DI时。
  • DI变成有状态 - 不同的依赖关系存在于不同的范围内 - EJB 3.0完全无法实现。
  • 你可以从一个类型安全中受益,松耦合的拦截机制
  • 你可以从一个类型安全中受益,松耦合机制

看一看第一章here,你会得到的想法: - )

1

DI在Java EE5中,您只能注入JDBC DataSource,JPA EntityManager,UserTransaction,Web Services,EJB等资源。所有这些资源都由容器管理。

随着EE6和CDI特别是你不限制只注入资源 - 你可以注入一切(每个bean)。查看CDI规范附带的注释:@Inject,@Named,@Scope,@Singleton等。 CDI为您提供了类似事件,修饰器等功能。

看看本教程,它应该可以帮助您理解CDI: http://java.dzone.com/articles/cdi-di-p2