我是Java EE的新手,我想知道使用CDI(@ Named,@ Inject)的真正好处是什么.当然我在问谷歌.但是我总是得到诸如“松散耦合”和“更好测试”之类的通用答案.但是我认为要实现松散耦合,不需要任何框架.

在我的小项目中,我使用三个类

public interface UserIf

{

...

}

@Named

public class User implements UserIf

{

...

}

public class Main

{

@Inject

UserIf user;

}

现在,我可以轻松注入UserIf的另一个实现.但我也可以做到

public class Main

{

UserIf user = new User();

}

该体系结构也很容易更改.只需编写UserIf的另一个实现并更改

UserIf user = new User();

UserIf user = new AnotherUserImpl();

我在这里看不到使用CDI的好处.当我考虑一个由一些EJB和WAR组成的更大的EAR项目时,如果某些模块(EJB,WAR)是松散耦合的,那么也许更容易重用它们.但是据我所知,如果这些类不在同一jar / war中,则无法使用CDI.那么,使用CDI会获得真正好处的真正设置是什么?

赫尔姆森的问候

解决方法:

关键是,如果您需要例如重命名AnotherUserImpl或想要切换到其他实现,则不必转到所有使用此impl的类并将其重命名.有了CDI限定词,您到处都有

@Inject

@AnotherUser

private User user;

客户代码对用户的实现一无所知,因此您可以在业务方面随意更改它,而客户甚至不会注意到.松散耦合的原理是,使用您的API的客户端实际上并不了解实现,这是在外部配置的(例如CDI Producers或Spring XML配置). CDI还具有其他好处,例如生产者,拦截者,新的交易API,替代品或其他.

标签:dependency-injection,cdi,java

来源: https://codeday.me/bug/20191029/1958759.html

java cdi是什么意思_Java EE CDI的真正好处相关推荐

  1. java枚举类型 的作用_JAVA枚举的作用与好处

    JAVA枚举的作用与好处 (2012-12-13 11:33:16) 标签: 我有 信息 示例 好处 任何 it 枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int ...

  2. java ee cdi_Java EE CDI限定词:快速浏览

    java ee cdi 在上下文和依赖注入(CDI)中, 限定符是类型安全和松散耦合的主体. 为什么? 没有CDI,我们将以类似于下面的方式注入Java EE组件 注意:这实际上不会编译,只是假设的代 ...

  3. java ee cdi_Java EE CDI依赖关系消歧示例

    java ee cdi 在本教程中,我们将向您展示如何避免CDI bean中的依赖关系消除歧义. 在CDI中,我们可以为应用程序中不同客户端的接口的多个实现实现依赖项注入. 依赖性消除歧义的问题是客户 ...

  4. java ee cdi_Java EE CDI依赖注入(@Inject)教程

    java ee cdi 在本教程中,我们将向您展示如何在CDI管理的Bean中实现依赖注入. 特别是,我们将利用CDI API提供的@Inject批注将CDI bean注入另一个bean. 通过这种方 ...

  5. java ee cdi_Java EE CDI程序化依赖关系消歧示例–注入点检查

    java ee cdi 在本教程中,我们将看到在注入Java EE CDI bean时如何避免程序依赖消除歧义. 我们已经在Jave EE依赖关系消除歧义示例中展示了如何避免CDI Bean中的依赖关 ...

  6. java ee cdi_Java EE CDI bean范围

    java ee cdi Java EE平台的上下文和依赖注入(CDI)是一项功能,有助于将Java EE平台的Web层和事务层绑定在一起. CDI是一组服务,可以一起使用,使开发人员可以轻松地在Web ...

  7. java ee cdi_Java EE CDI处理程序方法示例

    java ee cdi 这是CDI Disposer方法的教程. 在CDI中,由于Producer方法生成的对象随后可以注入到应用程序中,因此使用Disposer方法,以便在其工作完成时将其删除. D ...

  8. java ee cdi_Java EE CDI Producer方法教程

    java ee cdi 这是CDI Producer方法的教程. 在CDI中,生产者方法生成一个对象,然后可以将其注入. 当我们要注入本身不是bean的对象,要注入的对象的具体类型在运行时可能有所不同 ...

  9. java ee cdi_Java EE CDI ConversationScoped示例

    java ee cdi 在本教程中,我们将向您展示如何在Web应用程序中创建和使用ConversationScoped Bean. 在CDI中,bean是定义应用程序状态和/或逻辑的上下文对象的源. ...

最新文章

  1. SVN 两种存储格式(BDB和FSFS)区别
  2. com.google.gson.Gson 使用详解
  3. Java使用Optional与Stream来取代if判空逻辑(JDK8以上)
  4. Hadoop详解(十):Hadoop 作业调度机制
  5. 红帽杯——childRE
  6. 解决zip包安装python pip的安装问题
  7. xpath+多进程爬取网易云音乐热歌榜。
  8. 制作IOS 后台极光推送时,遇到的小问题
  9. 计算机画面的音乐素材,音效素材:高科技用户界面UI点触计算机数据分析全息音效合集...
  10. HDU6736 F.Forest Program(dfs找环)
  11. Python可变传参: *args和**kwargs
  12. 从零开始学前端:OPPO商城轮播图 --- 今天你学习了吗?(CSS:Day23)
  13. (APIO2014)序列分割
  14. 计算机字长与下列哪项指标密切相关,组成原理与汇编语言-中国大学mooc-题库零氪...
  15. OSError: [WinError 126] 找不到指定的模块。【专治疑难杂症】
  16. Android10支持dcip3,dcip3 相当于多少srgb
  17. 【网络安全】OSSIM平台网络日志关联分析实战
  18. micropython是什么意思_介绍 MicroPython 语言
  19. 软考高级软件架构师学习笔记一(软件架构设计)
  20. 设备树下的platform驱动编写

热门文章

  1. linux下passwd命令设置修改用户密码的方法
  2. PyTorch进行神经风格转换/迁移(Neural-Transfer:图像风格迁移)
  3. 通过printf设置Linux终端输出的颜色和显示方式
  4. Linux中的文件特殊权限
  5. 希尔排序python实现
  6. 科大星云诗社动态20210205
  7. [scala-spark]3. 变量 数据类型 分支与循环
  8. CFNet:End-to-end representation learning for Correlation Filter based tracking
  9. asp.net 读取excel文件
  10. 优秀程序员的45个习惯