我刚接触springboot,我试图了解不同依赖注入技术之间的区别。是否存在这样的场景:通过字段的依赖项注入总是优先于构造函数或setter注入?我听说现场注射总是一种不好的做法。如果情况不好,那我们为什么还要这样做?
mzmfm0qo1#
简而言之:没有关于这个的信息。长话短说:奇怪的是,spring文档甚至没有以任何方式提到字段注入di存在于两个主要的变体中,基于构造函数的依赖注入和基于setter的依赖注入。我还没有找到任何关于什么时候字段注入比前面提到的两个更好的信息,除了你不需要cbdi和sbdi的任何好处(例如,更容易的测试和避免npe)和你想保持代码简短的时候,但是如果你使用lombok,即使这个参数也会过时。为什么这一特性一开始就存在呢,imho:1.有一个糟糕的设计选择导致了它的创建和在生产中的使用(spring框架的第一个版本是在2002年发布的,当时可能没有任何关于现场注入是否是一个糟糕的实践的争论)2.向后兼容性已停止删除此功能,因为它可能会破坏现有的代码库。
1条答案
按热度按时间mzmfm0qo1#
简而言之:没有关于这个的信息。
长话短说:
奇怪的是,spring文档甚至没有以任何方式提到字段注入
di存在于两个主要的变体中,基于构造函数的依赖注入和基于setter的依赖注入。
我还没有找到任何关于什么时候字段注入比前面提到的两个更好的信息,除了你不需要cbdi和sbdi的任何好处(例如,更容易的测试和避免npe)和你想保持代码简短的时候,但是如果你使用lombok,即使这个参数也会过时。为什么这一特性一开始就存在呢,imho:
1.有一个糟糕的设计选择导致了它的创建和在生产中的使用(spring框架的第一个版本是在2002年发布的,当时可能没有任何关于现场注入是否是一个糟糕的实践的争论)
2.向后兼容性已停止删除此功能,因为它可能会破坏现有的代码库。