Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当Springbean定义文件多次加载到应用程序中时会发生什么?_Java_Spring_Javabeans - Fatal编程技术网

Java 当Springbean定义文件多次加载到应用程序中时会发生什么?

Java 当Springbean定义文件多次加载到应用程序中时会发生什么?,java,spring,javabeans,Java,Spring,Javabeans,我只是想知道一个Spring.xml文件何时使用ClassPathXmlApplicationContext多次加载到应用程序中。例如,如果我想通过在每个类中创建ApplicationContext的新实例,将Spring.xml中定义的服务放入我的类中。这种方法是否每次都创建新的bean而不破坏以前创建的bean?这是否会造成内存问题?当我在spring网站中看到这个时,我发现了这个。这个刷新是否通过破坏现有bean来创建现有bean的新bean定义 ClassPathXmlApplicati

我只是想知道一个
Spring.xml
文件何时使用
ClassPathXmlApplicationContext
多次加载到应用程序中。例如,如果我想通过在每个类中创建
ApplicationContext
的新实例,将
Spring.xml
中定义的服务放入我的类中。这种方法是否每次都创建新的bean而不破坏以前创建的bean?这是否会造成内存问题?当我在spring网站中看到这个时,我发现了这个。这个刷新是否通过破坏现有bean来创建现有bean的新bean定义

ClassPathXmlApplicationContext(String... configLocations)
      ***Create a new ClassPathXmlApplicationContext, loading the definitions from the given XML files and automatically refreshing the context.***

当同一个xml文件被多次加载时,spring会多次创建相同的bean。在大多数情况下,除启动时间外,这不会导致问题。但有时你会遇到冲突。例如,如果您有一个正在侦听TCP端口的bean,然后打开另一个尝试连接到同一端口的bean,那么它将失败。

这意味着如果我将Spring容器加载50次到应用程序中,将创建50个bean实例,并在整个会话时间内位于会话中,对吗?它会导致应用程序内存问题吗?不完全是。每次都会创建bean的新实例,因此旧实例将被新实例替换。旧实例将被垃圾收集,因此不会出现明显的内存问题,尽管上下文初始化的性能不会达到最佳:)