Я новичок в Spring Boot и не знаю, возможно ли то, что я хочу сделать, но мне нужно решить следующую проблему.
1 - У меня есть API с Spring Boot, и мне нужно настроить две СУБД (MySQL и Postgres).
2 - Для каждой СУБД мне нужно настроить разные профили. (Dev, Prod)
Следуйте моим классам конфигурации MySQL:
@Component
@Profile("mysql")
public class ConfigMySQL {
public ConfigMySQL() {
System.out.println("BD MySQL");
}
}
@Component
@Profile("dev")
public class ConfigDevMySQL extends ConfigMySQL {
public ConfigDevMySQL() {
System.out.println("\n\n");
System.out.println(" ****** Configuration dev MySQL... ******");
System.out.println("\n\n");
}
}
@Component
@Profile("prod")
public class ConfigProdMySQL extends ConfigMySQL{
public ConfigProdMySQL() {
System.out.println("\n\n");
System.out.println(" ****** Configuration prod MySQL... ******");
System.out.println("\n\n");
}
}
Следуйте моим классам конфигурации Postgres:
@Component
@Profile("postgres")
public class ConfigPostgres {
public ConfigPostgres() {
System.out.println("DB postgres");
}
}
@Component
@Profile("dev")
public class ConfigDevPostgres extends ConfigPostgres{
public ConfigDevPostgres() {
System.out.println("\n\n");
System.out.println(" ****** Configuration dev Postgres... ******");
System.out.println("\n\n");
}
}
@Component
@Profile("prod")
public class ConfigProdPostgres extends ConfigPostgres {
public ConfigProdPostgres() {
System.out.println("\n\n");
System.out.println(" ****** Configuration prod Postgres... ******");
System.out.println("\n\n");
}
}
мой файл профиля выглядит так:
Примечание. Я почти уверен, что он ошибается, но, например, я оставил это таким.
spring.profiles.active=mysql
spring.profiles.active=dev
Всегда помните, что это единый API с двумя СУБД и разными профилями.
Когда я запускаю свое приложение, у меня появляется этот вывод на консоли
BD MySQL
****** Configuration dev MySQL... ******
DB postgres
****** Configuration dev Postgres... ******
Я ожидал, что мой выход будет:
DB MySQL
****** Configuration dev MySQL... ******
Важно:
Когда я настраиваю профиль для подключения к моей базе данных MySQL Dev, я хочу подключиться только к ней. И я хочу того же результата, когда он лежит в основе Prod MySQL.
Это также относится к Postgres.
Когда я настраиваю профиль для подключения к моей базе данных Postgres Dev, я хочу подключаться только к ней. И я хочу того же результата, когда он лежит в основе Prod Postgres.
Я действительно не знаю, возможно ли это, и даже не знаю, как это сделать!
Кто-нибудь знает, как это сделать, и не могли бы вы мне помочь?
Благодарю за внимание.