java cdi是什么意思_Java EE CDI的真正好处

我是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值