根据Spring API,ApplicationContext是:
Central interface to provide configuration for an application. This is read-only while the application is running,but may be reloaded if
the implementation supports this.The root interface for accessing a Spring bean container. This is the basic client view of a bean container.
从上面我的问题是:
1)我看到书中提到的“容器”,容器是指什么?一个容器是否意味着一个java进程?或一个容器是指一个ApplicationContext对象?
2)如果我在一个java应用程序(在主体中)实例化两个ApplicationContext,这两个接口是否是一个中央容器?还是两个独立的实例?看下面的代码,context1和context2有什么区别?如果Beans.xml中有一个Singleton,它由context1和context2调用,它们是两个分离的实例还是相同的实例?
ApplicationContext context1 = new ClassPathXmlApplicationContext("Beans.xml"); ApplicationContext context2 = new ClassPathXmlApplicationContext("Beans.xml");
非常惊讶的是,我找不到任何文件来澄清这个非常基本的歧义,如果你的答案是从某个地方提到的,请说明,我渴望阅读,迫不及待要完全理解这个概念.
解决方法
在这个初始阶段,您在应用程序中没有(通常是可能的)控制,而是在引导完成时(或者没有,如果它失败),您将获得应用程序的完全初始化状态.
所谓的EJB3容器是一种替代或者可能的补充,但是Spring提供的一个没有遵守EJB定义的标准.历史上,EJB的采用受到该规范的复杂性的限制,Spring是一个新创建的项目,用于在J2SE jvm上运行EJB3类似的功能,并且没有EJB容器,并且配置更加简单.
ApplicationContext(作为interface,通过直接实现风格)是实现此IoC容器的意思,而不是beanfactory,而beanfactory现在(一个稀疏使用的)和more direct way管理bean,从而提供了基本的实现ApplicationContext的功能.
根据您的第二个问题,您可以拥有ApplicationContext的多个实例,在这种情况下,它们将完全隔离,每个都具有自己的配置.