春季bean订单集合。确定性?

时间:2016-12-20 13:35:12

标签: java spring jvm classloader

在我们公司,我们通知在不同的服务器上,自动装配集合中的bean的顺序是不同的,但在同一台机器上,它始终是相同的(在每次部署之后)。 spring或者classLoader如何安排相同的bean?在我们的例子中,我们有两个接口的实现。并且这些实现在某些地方注入了集合。在主机1上,注入集合中的A,B总是在主机2上,它总是B,A。

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

编辑:我在HD上列出了文件而没有任何与ls -U的排序,并注意到主机1类按顺序A,B和主机2按顺序B,A。任何人都可以确认这是原因吗?那么我将在不同的机器上搜索为什么这个顺序不同:)(.war与类相同,直接从nexus存储库下载)

1 个答案:

答案 0 :(得分:-1)

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

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

由于没有文件清楚地谈到spring bean实例化的默认顺序。我认为这是任意的,如果你找出一个模式你可以继续,但不要做任何逻辑实现取决于这种模式,因为它不能保证。