Приложение Spring для нескольких клиентов

Если у меня есть приложение, которое ведет себя по-разному в зависимости от клиента, для которого я его использую, каков наилучший способ обработки различий в кодах между клиентами?

2 способа, о которых я могу думать:

  1. для специфичных для клиента bean-компонентов - комментируйте bean-компонент в соответствии с клиентом и позволяйте auto-wire выбирать для меня правильные классы во время выполнения.

  2. Иметь разные филиалы в SVN для каждого клиента, и, следовательно, разные войны для каждого клиента

1 ответ

Я бы использовал Spring Profiles для этого.

Вы можете определить разные компоненты и конфигурацию для разных профилей:

@Configuration
@Profile("customer1")
public class Customer1Configuration {

    // ...

}

@Configuration
@Profile("customer2")
public class Customer2Configuration {

    // ...

}

Чтобы сделать профиль активным, вы можете указать его в application.properties:

spring.profiles.active=customer1

Или еще лучше - укажите в качестве аргумента командной строки:

--spring.profiles.active=customer1

Spring находит только компоненты без какого-либо профиля или компоненты, которые точно соответствуют указанному профилю. Это означает, что при запуске приложения с профилем "customer1" Spring игнорирует определения компонентов "customer2".

Другие вопросы по тегам