1-我有一个带有Spring Boot的API,我需要配置两个DBMS(MySQL和Postgres)。
2-对于每个DBMS,我需要配置不同的配置文件。(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");
}
}
@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
BD MySQL
****** Configuration dev MySQL... ******
DB postgres
****** Configuration dev Postgres... ******
我以为我的出口是:
DB MySQL
****** Configuration dev MySQL... ******
重要:
当我将配置文件配置为连接到我的MySQL Dev数据库时,我只想连接到它。我想要同样的结果,当它是MySQL的Prod的基础时。
当我将配置文件配置为连接到我的Postgres开发数据库时,我只想连接到它。我想要同样的结果,当它是postgres的Prod的基础时。
我真的不知道这是否可能,我甚至不知道如何做到这一点!
有人知道怎么做这个设置吗?你能帮我吗?
我感谢你的关注。
不需要多个带有@profile
注释的spring组件,您可以使用带有@profile(db_name)
的配置类,然后在这些类中激活特定于环境的配置文件。例如,MySQL配置文件:
@Configuration
@Profile("mysql")
public class MySqlConfiguration{
public MySqlConfiguration() {
System.out.println("BD MySQL");
}
@Bean
@Profile("dev")
public ConfigDevMySQL() {
return new ConfigDevMySQL();
}
@Bean
@Profile("prod")
public ConfigProdMySQL () {
return new ConfigProdMySQL();
}
}
这应该意味着只有在设置了相关的DB概要文件时才读取配置类,而只有在设置了相关的环境概要文件时才创建后续的bean。
您还应该从当前类中删除@component
注释--ConfigProdMySQL
等--并在配置类中手动实例化它们。
我有两个配置文件(“autoContido”和“weblogic”),其中每个配置文件都有两个配置类,因为我使用的是两个数据源。 我已经将特定数据源中的bean注释为@Primary,而另一个数据源配置类中的bean不是@Primary,但我对它们的命名不同。 我以为使用@主注释就不会有像下面这样的错误,但我仍然得到它们。有人能帮我看看问题出在哪里吗? 我尝试使用@Primary annotati
寻找在Springboot应用程序中配置多个配置文件特定属性文件的最佳方法。下面是一个例子: -资源 · --application.properties · · · · · --德夫 --application-dev.properties --ldap-dev.properties --Quartz-Dev.Prope
问题内容: 我有多个要从类路径加载的属性文件。有一个默认设置,它是的一部分。我springcontext希望文件位于类路径中。即 我还需要使用外部集覆盖这些属性的选项。我在中有一个外部配置文件夹cwd。按照文件夹应该在classpath上。但是从doc尚不清楚,它是否只会覆盖或配置中的所有属性。 当我对其进行测试时,只会拾取,其余属性仍会从拾取/src/main/resources。我尝试将它们作
我有多个属性文件要从类路径加载。在下有一个默认设置,它是的一部分。我的希望文件位于类路径上。即。 我还需要用外部集重写这些属性的选项。我在中有一个外部配置文件夹。根据spring boot,文档配置文件夹应该在类路径上。但从doc中不清楚它是否只会重写或config中的所有属性。 当我测试它时,只有被提取,其余属性仍然从中提取。我尝试将它们作为逗号分隔的列表提供给,但默认设置仍未被覆盖。 如何使多
我尝试使用maven命令行执行多个maven概要文件 但它只对Profile2执行,Profile1永远不会执行。通过命令行执行多个配置文件需要帮助。 另请注意,当我列出活动配置文件时,它会将两个配置文件显示为活动的。
问题内容: 我目前正在构建一个库以对我的一些代码进行模块化,并且我遇到了Hibernate的问题。 在我的主应用程序中,我有一个hibernate配置来获取运行所需的信息,但是我的库中也需要hibernate,因为我想要的某些对象可以在其他应用程序中使用。 当我启动两个hibernate设置的tomcat服务器时,出现错误,指出无法解析bean,并且说我的查询中缺少位置参数的bean。但是,当我仅