public class Foo {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
//use the context as you wish...
}
}
public class Foo {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
ApplicationContext context2 =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
//use the context as you wish...
}
}
4条答案
按热度按时间qlvxas9a1#
@feak直接回答了
ApplicationContext
在Spring中的意义,简而言之,它是一个加载配置的对象(通常是基于XML文件注解的),然后Spring将开始管理bean及其优点:要启动应用程序上下文,可以使用以下方法之一:
DispatchServlet
将为您加载应用程序上下文,因此您只需在应用程序的WEB-INF文件夹中创建一个 springapp-servlet.xml 文件。请注意,应用程序上下文与单个配置相关联(是否基于XML)。期间。
理解了这一点之后,您也可以理解每个应用程序可以有多个应用程序上下文。也就是说,在同一个应用程序中有两个或更多的
ApplicationContext
。从控制台应用程序的最后一个示例中,这一点很容易检查:请注意,我们有两个应用程序上下文使用相同的XML配置。您能做到这一点吗?是的,您实际上在这里看到了它。那么,有什么区别呢?主要区别在于Spring bean单例作用域是每个应用程序上下文的单例,这意味着当从
context
检索applicationContext.xml文件中配置的Bar
bean时,将与从context2
检索它不同,但是从context
的几次检索将返回相同的Bar
bean示例。这被认为是一个好的还是坏的实践?都不是,这将取决于要解决的问题(在最后一个例子中,我会说这是一个坏的实践)。大多数人会建议在一个地方配置所有的bean(通过XML或其他),并由一个应用程序上下文加载。
vxbzzdmp2#
让我们用简单的话来理解这一点。
ApplicationContext是Spring应用程序中的中央接口,用于向应用程序提供配置信息。它在应用程序开始运行时创建。
它提供了我们的应用程序所需的完整配置:
1.应用程序侦听器-事件所需的所有侦听器。
1.应用程序当前环境特定信息
1.资源模式解析器-带有路径匹配器的资源加载器。
1.生命周期处理器。
1.类别载入器。
1.启动和关闭监视器。
1.阅读器和扫描仪。
1.记录器
等等。
在下面的快照中,我们可以了解一些关于Application对象的情况。
总之,我们可以说应用程序上下文是为运行应用程序而创建的配置对象。
applicationContext.xml
定义了“根webapp上下文”的bean。它是一个Web感知的ApplicationContext。它用于在Web应用程序中的所有Servlet之间共享Bean。
我希望这对你有帮助。
afdcj2ne3#
我猜您的同事指的是加载的spring应用程序上下文,它允许访问:
0qx6xfy64#
从javadoc:
为应用程序提供配置的中央接口。在应用程序运行时,此接口是只读的,但如果实现支持此接口,则可以重新加载。
应用程序上下文提供:[...]