我们如何在Web应用程序中实例化spring bean

时间:2017-06-24 18:00:27

标签: spring

在大多数Spring教程中,我看到spring bean实例化在类中使用main方法。但在现实世界的情况下,这不是它的工作原理吗?比如Web应用程序,我们如何做以下操作,我们是否需要这样做?

ApplcationContext context = new ClassPathXmlApplicationContext("applicaitonContext.xml");
context.getBean("blah");

1 个答案:

答案 0 :(得分:1)

带有spring的Web应用程序通常在web.xml中定义了一个名为listener的东西:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

此侦听器负责初始化XmlWebApplicationContextApplicationContext的实现,就像ClassPathXmlApplicationContext一样)/WEB-INF/applicationContext.xml作为默认配置文件位置(如果没有重新定义)

所以

  

ApplicationContext context = new   的ClassPathXmlApplicationContext(&#34; applicaitonContext.xml&#34);

自动完成。

至于

  

context.getBean(&#34;等等&#34);

有可能,你只需要将ApplicationContext注入任何bean,如:

@Component
class AnyBean {
    @Autowired
    private ApplicationContext context;

    void doSomethingWithBlah() {
        context.getBean("blah").doSomething();
    }
}

但这不是春天的意思。你应该注入&#34; blah&#34;使用@Autowired@Inject的bean,而不是直接与应用程序上下文交互。

详情请参阅春季documentation