使用限定符和指定所需的确切实现类之间有什么不同?
此问题复制自:http://docs.jboss.org/weld/reference/latest/en-US/html/injection.html
答案 0 :(得分:1)
一般来说,限定符会在各方之间形成一层解耦。这允许您在不改变另一方的情况下更改一方的实现。
However, I find it very rare to actually have more than one implementation class.
这取决于用例。虽然您可能适合业务逻辑的大多数“内部”类(将有一个MailService
而不是两个或三个),但通常有一些 beantypes具有多个实现
@Inject @LDAP
private AuthenticatorService
VS
@Inject @FormBased
private AuthenticatorService
已经提到了为不同的部署方案模拟/提供不同的bean 。
此外,你几乎肯定会有这样的逻辑,其中限定词告诉“故事的一部分”并使代码可读和结构化:
@Inject @Authenticated
private User user;
答案 1 :(得分:0)
从功能上讲,它们是一样的。但是,我发现实际上有多个实现类非常罕见。当您对类进行单元测试时,您会发现依赖注入更有用。依赖注入允许您在运行时轻松注入常规实现实例。然后在单元测试中,当您手动构建要测试的对象时,可以轻松传入模拟实现。