Вы не упоминаете, какую конфигурацию вы используете (на основе аннотаций или на основе XML), но в конфигурации bean-компонентов XML вы можете использовать атрибут depends-on
, чтобы гарантировать последовательность бинов Все, что вам нужно, выполняется в правильном порядке.
Например, если у вас есть два боба:
<bean id="bean1" class="my.package.class" />
<bean id="bean2" class="my.package.class2" />
<bean id="bean3" class="my.package.class3" depends-on"bean1, bean2" />
В этом случае bean1 и bean2 будут созданы в неподтвержденном порядке. Spring пытается создать экземпляр на основе порядка XML-файла, но это не гарантируется. Однако гарантируется, что bean3 не будет создан до того, как будут созданы bean1 и bean2.
Я не знаю, изменит ли это ваше состояние расы, но, надеюсь, это должно помочь.
В худшем случае вы всегда можете создать экземпляр всех bean-компонентов, а после создания экземпляра вы можете использовать FactoryMethodInvokingBean для вызова статического метода после создания экземпляра bean-компонента. Еще раз, убедитесь, что вы используете depends-on
, чтобы гарантировать, что FactoryMethodInvokingBean вызывается после создания экземпляра синглтон-компонента.