Подтвердить что ты не робот

Переопределение bean, заданное в родительском контексте в дочернем контексте

В нашем приложении есть требование поддерживать мульти-аренда. Каждый из подключенных клиентов может потенциально переопределить 1 или более beans или некоторые свойства bean, определенные на уровне базовой платформы (общий код/​​определения). Мне интересно, как лучше всего справиться с этим.

4b9b3361

Ответ 1

Spring позволяет вам повторно определять одно и то же имя bean несколько раз и принимает последнее определение bean, обработанное для данного имени, которое будет победителем. Например, у вас может быть XML файл, определяющий ваше ядро ​​beans, и импортируйте его в XML файл, специфичный для клиента, который также переопределяет некоторые из этих beans. Это немного хрупко, хотя, поскольку нет никакого механизма, чтобы сказать "это определение bean является переопределением".

Я нашел, что самый чистый способ справиться с этим - использовать новый @Bean -syntax, представленный в Spring 3. Вместо определения beans в качестве XML вы определяете их в Java. Таким образом, ваше ядро ​​beans будет определено в одном классе @Bean -annotated, а ваши конфиги клиента будут подклассифицировать это и переопределить соответствующий beans. Это позволяет использовать стандартные аннотации java @Override, явно указывая на то, что заданное определение bean переопределяется.