我刚接触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();
to
UserIf user = new AnotherUserImpl();
我认为在这里使用CDI没有好处。当我考虑一个由一些EJB和WAR组成的更大的EAR项目时,如果它们是松散耦合的,可能更容易重用一些模块(EJB,WAR)。但据我所知,如果类不在同一个jar / war中,则无法使用CDI。那么什么样的设置才能真正获得使用CDI的实际好处呢?
问候 Helmsen