为什么Spring的ApplicationContext.getBean被认为是糟糕的呢?
我问了一个一般的Spring问题:自动浇铸春豆有多个人回应说是春天的ApplicationContext.getBean()
应该尽量避免。那是为什么?
否则,我应该如何访问我配置的Spring创建的bean?
我在一个非web应用程序中使用Spring,并计划访问一个共享ApplicationContext
对象如LiorH所述.
修正
我接受下面的答案,但这是马丁·福勒的另一个选择。讨论依赖注入与使用服务定位器的优点(这与调用包装的ApplicationContext.getBean()
).
在某种程度上,福勒说,“对于服务定位器,应用程序类通过消息显式地向定位器请求[服务]。对于注入,没有显式请求,服务出现在应用程序类中,因此出现了控制反转。控制反转是框架的一个共同特征,但它是要付出代价的。当您尝试调试时,它往往很难理解并导致问题。所以总的来说,我宁愿避免它[控制反转],除非我需要它。这并不是说这是一件坏事,只是我认为它需要为自己辩护,而不是更直截了当的选择。"