Не могли бы вы подробнее объяснить ваш вариант использования, чтобы мы могли предоставить вам лучшее решение, которое мы можем :)?
В общем, неправильный подход к обработке файлов @Configuration
как к обычным java-классам и использованию всей мощи java как языка для кода в этих файлах. Вы упоминаете наследование, как насчет сложных if-условий, циклов, рекурсии, кого-нибудь? :) Я хочу сказать, что на самом деле вы не хотите заканчивать сложным кодом в конфигурации и отлаживать его.
Теперь о самом наследовании. Это не очень хорошая идея, поскольку, учитывая тот факт, что это не обычный класс Java, в сочетании с пониманием того, как именно Spring использует эти файлы конфигурации, вы поймете, что конфигурация здесь вам ничего не дает.
Думайте о конфигурациях как о месте, где вы указываете, какие компоненты должны быть загружены. Весна позаботится обо всем остальном. Я понимаю, что вы имеете в виду некоторый вариант использования, но он просто не подходит к подходу Spring.
Что касается вашего заявления:
Я хочу сначала загрузить бины из дочернего конфига и из родительского конфига.
Не могли бы вы объяснить, зачем вам это нужно?
Когда пружина загружается, она сначала сканирует все конфигурации, но не создает бинов (пока нет). Вместо этого он «переводит» информацию, найденную в этих @Configuration
классах, в «метаданные» (это называется «определения бинов» в терминах весны). Все определения bean-компонентов из всех конфигураций ....
Только после этого Spring запускает создание экземпляров bean-компонентов (к этому времени он также знает, какой bean-компонент должен быть создан первым, например, если у вас есть что-то вроде):
class A {
private B b;
public A(B b) {this.b = b;}
}
class B {
....
}
Тогда очевидно, что Spring должен сначала создать Бин "B".