一尘不染

Java Spring多个ApplicationContext

spring

春天的定义ApplicationContext很模糊,我几乎完成了一整本教程,但仍然不明白它ApplicationContext代表什么。

根据Spring API,ApplicationContext是:

  • 中央接口,为应用程序提供配置。在应用程序运行时,它是只读的,但是如果实现支持,则可以重新加载。

  • 用于访问Spring bean容器的根接口。这是bean容器的基本客户端视图。

从上面,我的问题是:

1)我不断看到书中提到的“容器”,容器指的是什么?一个容器意味着一个Java进程吗?或一个容器引用一个ApplicationContext对象?

2)如果我实例化ApplicationContext一个Java应用程序中的两个(都在main正文中),那么这两个接口是否都指向一个中央容器?还是两个单独的实例?请参阅下面的代码,context1和之间有什么区别context2?如果中有一个Singleton Beans.xml,则由context1和调用context2,它们是两个单独的实例还是同一实例?

ApplicationContext context1 = new ClassPathXmlApplicationContext("Beans.xml");
ApplicationContext context2 = new ClassPathXmlApplicationContext("Beans.xml");

阅读 1113

收藏
2020-04-19

共1个答案

一尘不染

容器指的是控制容器的核心弹簧反转。容器提供了一种通过使用反射来初始化/引导应用程序(将配置加载到xml文件或注释中)以及管理Java对象(称为
bean托管对象) 的生命周期的方法。

在此初始阶段,您在应用程序中没有(通常是可以的)控制,而是在完成引导程序后(如果失败则什么也没有),您将获得应用程序的完全初始化状态。

它是对 EJB3容器
的替代或可能的补充。但是,如果没有遵循EJB定义的标准,就会出现问题。从历史上看,EJB的采用受到该规范的复杂性的限制,spring是一个新创建的项目,用于在J2SE
jvm上运行EJB3的可比功能,并且没有EJB容器,并且配置简单得多。

ApplicationContext(作为接口,并通过直接实现实现)是实现此IoC容器的手段,与相比BeanFactory,,后者现在(一种稀疏使用的)更直接的方式来管理Bean,该方式提供了基本实现ApplicationContext的功能。

关于第二个问题,您可以有多个ApplicationContexts实例,在这种情况下,它们将完全隔离,每个实例都有自己的配置。

2020-04-19