在大多数Spring教程中,我看到spring bean实例化在类中使用main
方法。但在现实世界的情况下,这不是它的工作原理吗?比如Web应用程序,我们如何做以下操作,我们是否需要这样做?
ApplcationContext context = new ClassPathXmlApplicationContext("applicaitonContext.xml");
context.getBean("blah");
答案 0 :(得分:1)
带有spring的Web应用程序通常在web.xml
中定义了一个名为listener的东西:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
此侦听器负责初始化XmlWebApplicationContext
(ApplicationContext
的实现,就像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。