编程语言
首页 > 编程语言> > Java EE 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