14
为什么Spring的ApplicationContext.getBean被认为是不好的?
我问了一个一般性的Spring问题:自动播发Spring Bean,并让多个人回答说ApplicationContext.getBean()应尽可能避免调用Spring 。这是为什么? 我还应该如何访问配置了Spring创建的Bean? 我在非Web应用程序中使用Spring,并计划按LiorH的描述访问共享ApplicationContext对象。 修正案 我接受以下答案,但这是Martin Fowler的另一种选择,他讨论了依赖注入与使用Service Locator(本质上与调用wraped相同ApplicationContext.getBean())的优点。 Fowler在某种程度上说:“ 使用服务定位器,应用程序类通过向定位器的消息显式地请求[服务]。使用注入时,没有显式请求,服务将出现在应用程序类中-因此控制权反转。控制反转是框架的一个共同特征,但这是有代价的。当您尝试进行调试时,它往往难以理解并导致问题。因此,总的来说,我希望避免这种情况。除非我需要它。这并不是说这是一件坏事,只是我认为它需要证明自己比更直接的选择更合理。 ”