Java 集合中的SpringBean命令。确定性?

Java 集合中的SpringBean命令。确定性?,java,spring,jvm,classloader,Java,Spring,Jvm,Classloader,在我们公司,我们通知说,在不同的服务器上,autowired collection中bean的顺序是不同的,但在同一台机器上总是相同的(每次部署后)。spring或classLoader如何安排等价的bean?在本例中,我们有两个接口的实现。实现在某些地方注入了集合。在主机1上,在注入的集合中总是A,B,在主机2上总是B,A 所以它看起来是确定性的,但在不同的机器上是不同的。有人能证实吗?这取决于什么?我找不到关于那件事的任何信息 编辑:我在HD上列出了文件,没有使用ls-U进行任何排序,注意到

在我们公司,我们通知说,在不同的服务器上,autowired collection中bean的顺序是不同的,但在同一台机器上总是相同的(每次部署后)。spring或classLoader如何安排等价的bean?在本例中,我们有两个接口的实现。实现在某些地方注入了集合。在主机1上,在注入的集合中总是A,B,在主机2上总是B,A

所以它看起来是确定性的,但在不同的机器上是不同的。有人能证实吗?这取决于什么?我找不到关于那件事的任何信息


编辑:我在HD上列出了文件,没有使用ls-U进行任何排序,注意到在主机1上,类的顺序是A,B,在主机2上,顺序是B,A。有人能确认这是原因吗?因此,我将搜索不同机器上此顺序不同的原因:)(.war with class是相同的,直接从nexus存储库下载)

简而言之,您想知道Springbean实例化的默认顺序

bean实例化过程中涉及到许多算法,如依赖项解析、显式依赖项配置(@DependsOn)等。当bean不属于任何if…else时,它将成为默认的实例化序列。因此,没有人保证bean实例化的默认顺序,尽管我们可以通过配置暗示bean实例化顺序


因为没有文档清楚地谈到Springbean实例化的默认顺序。我认为它是任意的,如果你找到一个模式,你可以继续进行,但是不要根据这个模式做出任何逻辑的实现,因为它不能保证。p> 这是遗留代码。我不会根据那个命令执行任何事情。我只是想知道它是如何工作的。你“它是如何工作的”对我来说是“SpringBean实例化的默认序列”,我在回答中解释道:)那么“默认实例化序列”是什么呢?这两个bean是通过自动扫描实例化的,没有其他bean对它们有引用?只有一个引用是与AutoDeD集合一起使用的。考虑在现有的帖子上添加奖励,而不是再问相同的问题。