适当的ApplicationContext用法?

时间:2009-12-15 17:00:17

标签: java spring

我最近开始学习Spring Framework,我对于如何使用ApplicationContext有点不清楚 - 无论是在独立应用程序还是Web应用程序中。我知道ApplicationContext曾经用spring配置xml实例化,是“spring container”并且是一个单例。

可是:

  1. 在应用程序的起点 - 主要方法中,我是否使用ApplicationContext.getBean(“className”),然后将DI用于所有其他已注册的bean,或者是否有办法使用< em>仅 DI?
  2. 除了 main方法之外还有其他地方我可以/应该使用ApplicationContext.getBean(“className”)吗?
  3. 是否应该在Web应用中使用ApplicationContext.getBean(“className”)?
  4. 如果您认为有关网络应用程序的DI必须知道的信息,即使我可能没有特别询问,请分享。

2 个答案:

答案 0 :(得分:3)

  1. 您需要至少从外部调用一次上下文,这是无法避免的。使用webapps,这部分对你来说是隐藏的,感觉就像所有东西都在使用DI,即使Spring的servlet粘合代码在幕后做了一些不愉快。

  2. 可能,是的;应该,不。您自己致电getBean的理由很少。

  3. 最明显的情况是当你有一个需要访问上下文的servlet过滤器时。过滤器不是由Spring管理的,所以Spring不能将它们连接到它们中。

  4. 这有点太模糊了。阅读参考文档:)

答案 1 :(得分:1)

我通常建议每个应用程序只使用一次的ApplicationContext.getBean(),并依赖Spring配置来完成剩下的工作。

该异常适用于单元测试,我想在其中加载bean的特定子集(因此我将显式加载通常从bean层次结构顶部加载的bean)。