我是 Spring Boot 的新手,我不知道我想做的事情是否可行,但我有以下问题要解决。
1 - 我有一个带有 Spring Boot 的 API,我需要配置两个 DBMS(MySQL 和 Postgres)。
2 - 对于每个 DBMS,我需要配置不同的配置文件。(开发,产品)
遵循我的 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,有两个 DBMS 和不同的配置文件。
当我运行我的应用程序时,我在控制台上有这个输出
BD MySQL
****** Configuration dev MySQL... ******
DB postgres
****** Configuration dev Postgres... ******
我预计我的出口是:
DB MySQL
****** Configuration dev MySQL... ******
重要的:
当我将配置文件配置为连接到我的 MySQL Dev数据库时,我只想连接到它。当它是 MySQL 的Prod的基础时,我想要相同的结果。
这也适用于 Postgres。
当我将配置文件配置为连接到我的 Postgres Dev数据库时,我只想连接到它。当它是Postgres Prod的基础时,我想要同样的结果。
我真的不知道这是否可能,我什至不知道该怎么做!
有谁知道如何进行此设置,您能帮我吗?
我感谢您的关注。