gpt4 book ai didi

java - 应用上下文。这是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:46:55 34 4
gpt4 key购买 nike

我的同事经常使用“应用程序上下文”这个词。在许多文章中,这种搭配也经常使用。

我目前的理解:应用上下文是单个xml文件。

但我明白,如果我是对的,人们不会使用“应用程序上下文”而不是配置 xml 文件。

你能帮我解决这个问题吗?

最佳答案

@feak 直接回答了 ApplicationContext 的含义就 Spring 而言。简而言之,它是一个加载配置的对象(通常基于一个 XML 文件注解),然后 Spring 将开始管理 bean 及其好处:

  • 在包中声明的 Beans
  • 注解声明的 Beans
  • 构造函数和方法 Autowiring
  • Bean 注入(inject)
  • 配置、.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...
    }
    }
  • 如果 Java Web 应用程序使用 Spring MVC,DispatchServlet 将为您加载应用程序上下文,因此您只需创建一个 springapp-servlet.xml 应用程序的 WEB-INF 文件夹中的文件。

请注意,应用程序上下文与单个配置相关联(基于或不基于 XML)。期间。


了解这一点后,您还可以了解每个应用程序可以拥有多个应用程序上下文。也就是说,在同一个应用程序中有两个或多个 ApplicationContext。从控制台应用程序的最后一个示例中,这很容易检查:

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 配置的应用程序上下文。你能做这个吗?是的,您实际上在这里看到了它。那有什么区别呢? ma​​in 区别在于 Spring beans 单例范围是单例每个应用程序上下文,这意味着当检索在 applicationContext.xml 文件中配置的 Bar bean从 context 将与从 context2 中检索它不同,但是从 context 中检索的多个检索将返回相同Bar bean 实例。

这被认为是好的还是坏的做法? 都不是,这取决于要解决的问题(在最后一个例子的情况下,我会说这是一个不好的做法)。大多数人会建议将所有 bean 配置在一个地方(通过 XML 或其他方式)并由单个应用程序上下文加载。

关于java - 应用上下文。这是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19615972/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com