Код: Выделить всё
@Bean
@ConditionalOnBean(jakarta.jms.ConnectionFactory.class)
Фактический подпроект app, содержащий работоспособное загрузочное приложение, зависит от обоих этих модулей. Также модуль B зависит от A. Приложение также имеет зависимость runtimeOnly от ActiveMQ Artemis, позволяющую Spring Boot ArtemisAutoConfiguration выполнять настройку фабрики соединений JMS через ArtemisAutoConfiguration.
Однако, когда я смотрю на отчет об оценке состояния после запуска приложения, я вижу, что условие не соответствует компоненту, определенному в подпроекте A, но соответствует компоненту, определенному в подпроекте B. Поскольку ConditionalOnBean оценивается на этапе регистрации компонента, я предполагаю, что определение компонента для artemis регистрируется только после регистрации компонента в подпроекте A, но до регистрации компонента в подпроекте B.
Может ли кто-нибудь объяснить, что определяет этот порядок?
Я уже просматривал BOOT-INF/classpath.idx в загрузочном jar Spring. Но это показывает A и B перед любыми записями artemis и Spring-Boot-Autoconfiguration. Поэтому я полагаю, что это не так.
ПРИМЕЧАНИЕ: да, использование @AutoConfigureAfter(ArtemisAutoConfiguration.class) при автоматической настройке подпроекта A исправляет это. Мне просто любопытно узнать, почему это действительно было необходимо применить.
Подробнее здесь: https://stackoverflow.com/questions/770 ... igurations