Java 应用程序上下文。这是什么?
我的同事经常使用“应用程序上下文”这个词。在许多文章中,这种搭配也经常使用 我目前的理解是:应用程序上下文是单个xml文件 但我明白,如果我是对的,人们不会使用“应用程序上下文”而不是配置xml文件Java 应用程序上下文。这是什么?,java,spring,spring-mvc,configuration,config,Java,Spring,Spring Mvc,Configuration,Config,我的同事经常使用“应用程序上下文”这个词。在许多文章中,这种搭配也经常使用 我目前的理解是:应用程序上下文是单个xml文件 但我明白,如果我是对的,人们不会使用“应用程序上下文”而不是配置xml文件 您能帮我解决这个问题吗?我想您的同事指的是加载的spring应用程序上下文,它允许访问: 应用程序的配置 初始化的bean 应用程序事件api 等 @feak从春天的角度给出了一个直截了当的答案。简而言之,它是一个加载配置(通常是基于XML文件注释)的对象,然后Spring将开始管理bean及其好
您能帮我解决这个问题吗?我想您的同事指的是加载的spring应用程序上下文,它允许访问:
- 应用程序的配置
- 初始化的bean
- 应用程序事件api
- 等
- 包中声明的bean
- 由注释声明的bean
- 构造函数和方法自动布线
- 豆制品
- 配置、.properties和.yaml文件加载
- 等
- 在应用程序开始时手动加载应用程序上下文。这是出于示例目的或在独立应用程序中完成的:
public class Foo { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("path/to/applicationContext.xml"); //use the context as you wish... } }
- 对于使用Spring MVC的Java web应用程序,
将为您加载应用程序上下文,因此您只需在应用程序的web-INF文件夹中创建一个springapp-servlet.xml文件DispatchServlet
- Bean工厂-负责创建名为Bean的java对象。一个例子是应用程序中的组件
- 应用程序侦听器-事件所需的所有侦听器
- 网络服务器信息
- 应用程序当前特定于环境的信息
- 资源模式解析器-带有路径匹配器的资源加载程序
- 生命周期处理器
- 类加载器
- 启动和关闭监视器
- Servlet上下文
- 阅读器和扫描仪
- 记录器 等等
- @feak从春天的角度给出了一个直截了当的答案。简而言之,它是一个加载配置(通常是基于XML文件注释)的对象,然后Spring将开始管理bean及其好处:
理解了这一点之后,您还可以理解,每个应用程序可以有多个应用程序上下文。也就是说,在同一个应用程序中有两个或多个
ApplicationContext
s。从console应用程序中的最后一个示例来看,这很容易检查:
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...
}
}
请注意,我们有两个使用相同XML配置的应用程序上下文。你能做到吗?是的,你真的看到了。那有什么区别呢?main的区别在于SpringBeans的单例作用域是单例的,这意味着当从context
检索applicationContext.xml文件中配置的条bean时,它与从context2
检索它的作用域将不同,但是从context
中检索的几个将返回相同的Bar
bean实例
这被认为是好的还是坏的做法两者都不,这将取决于要解决的问题(在最后一个例子中,我会说这是一种不好的做法)。大多数人建议将所有bean配置在一个地方(通过XML或其他方式),并由单个应用程序上下文加载。让我们用简单的话来理解这一点
ApplicationContext是Spring应用程序中的中央接口,用于向应用程序提供配置信息。它是在应用程序开始运行时创建的
它提供了应用程序所需的全部配置:
package com.srmhitter9062.spring;
导入org.springframework.beans.BeansException;
导入org.springframework.context.ApplicationContext;
导入org.springframework.context.ApplicationContextAware;
公共类ApplicationContextUtils实现ApplicationContextAware{
私有静态应用程序上下文ctx;
@凌驾
public void setApplicationContext(ApplicationContext appContext)
抛出BeansException{
ctx=appContext;
}
公共静态应用程序上下文getApplicationContext(){
返回ctx;
}
}
我们可以在下面的快照中了解应用程序对象
总之,我们可以说应用程序上下文是为运行应用程序而创建的配置对象
applicationContext.xml
定义了“根webapp上下文”的bean。这是一个web感知的应用程序上下文
它用于在web应用程序中的所有servlet之间共享bean
我希望这是有帮助的。xml文件和“应用程序上下文”应用程序上下文和SpringXML文件之间的区别是不同的术语。可以使用一个、两个或更多xml文件初始化一个应用程序上下文。此外,可以使用不带xml文件的/@配置类初始化应用程序上下文。所以,我想说xml和/@Configuration是配置上下文的方法。应用程序可以有几个应用程序上下文。每个上下文都有特定的设置。有些任务需要这样的方法(在某些情况下)。我没有机会去做it@Shamse我想homeAccount也明白了。为什么不回答这个问题,而跳出一个新的问题呢?您能解释一下单一应用程序上下文和单一xml之间的区别吗file@homeAccount你还不明白什么?XML文件定义配置,应用程序上下文从该文件加载配置,Spring开始处理定义的bean。一个上下文可以使用多个XML文件。怎么用?我不明白什么时候我使用了很多上下文,什么时候我使用了单个上下文。我怎么能理解这个xml与哪个上下文有关呢