【发布时间】:2014-08-05 10:03:13
【问题描述】:
我是 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 的好处呢?
问候赫尔姆森
【问题讨论】:
标签: java dependency-injection cdi