Приложение Spring для нескольких клиентов
Если у меня есть приложение, которое ведет себя по-разному в зависимости от клиента, для которого я его использую, каков наилучший способ обработки различий в кодах между клиентами?
2 способа, о которых я могу думать:
для специфичных для клиента bean-компонентов - комментируйте bean-компонент в соответствии с клиентом и позволяйте auto-wire выбирать для меня правильные классы во время выполнения.
Иметь разные филиалы в 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".