IoC 很好,但是,与 Autowiring (@EJB、@Autowired、@Inject、@SpringBean...)一起使用时,您不认为它限制了 IoC 的目标吗?
其实我不太了解不同框架中的 Autowiring 系统,但它似乎主要基于类型。
当您在 IService 上使用 @EJB 时,您只需要一个实现 ServiceImpl 即可使其工作。
如果我们想要很多实现怎么办?
似乎一些 Autowiring 注释可以有参数。
例如在条纹中,您可以执行以下操作:
@SpringBean("xxxService")
其中 xxxService 是 spring 初始化的 bean。
在这种情况下,好吧,您不要执行“new XxxServiceImpl()”
但是您仍然对要在 bean 中使用的服务实现进行了硬编码引用。它根本不是类引用,而是对实现的 spring bean 引用......
你怎么看?
我喜欢 Autowiring ,但只是想知道自己......
最佳答案
是的, Autowiring 是有限制的(只是 Autowiring 接口(interface)的一种实现),因此在注入(inject)正确的实现时,它会破坏部分 IoC 的灵活性。
但是,我认为 Autowiring 只是一种减少配置的方法。因此,当您的 90% 的依赖项可以 Autowiring 时,您往往会得到较少的总体配置(其余配置很重要,因为它只包含重要的(特定于实现的)位)