CDI Analysis

CDI

CDI是一组服务,它们一起使用,使得开发人员可以很容易地在web应用程序中使用企业bean和JavaServer Faces技术。CDI设计用于有状态对象,它还有许多更广泛的用途,允许开发人员以松散耦合但类型安全的方式集成各种组件,从而具有极大的灵活性。

CDI提供的服务

  • 上下文
  • 依赖注入

(这两个是最基础的)

  • 与表达式语言的集成
  • 修饰注入组件的能力
  • 使用类型安全拦截器绑定将拦截器与组件关联的能力
  • 一个事件通知模型
  • 除了Java Servlet规范定义的三个标准范围(请求、会话和应用程序)之外,还有一个web会话范围
  • 一个完整的服务提供者接口(SPI),它允许第三方框架干净地集成到Java EE环境中

一、@Inject 注解

 CDI 主要使用 @Inject 注解来实现依赖注入,把受管理的 Bean 注入到由容器管理的其它资源中去。

二、构造器依赖注入

使用 @Inject 进行了注解的构造器时,这种情况下,容器会改用有注解的构造器而不是无参构造器,并且把通过构造器参数传入的依赖资源注入到 Bean 实例中来。

一个类只允许有 一个 @Inject 注解的构造器。

三、字段依赖注入

当容器初始化一个 SomeBean 类型的 Bean 时,它会把一个正确的 Service 实例注入给该字段,即使该字段是一个私有字段,并且不需要有任何 setter 方法。

四、初始化方法依赖注入

当容器初始化一个 SomeBean 类型的 Bean 时,会调用所有由 @Inject 注解了的方法,并且通过方法参数的方式把依赖注入进来。

猜你喜欢

转载自www.cnblogs.com/cheneywxy/p/10612886.html
CDI
今日推荐