我有一个要求,我需要将一个小API连接到Oracle DB,以便执行几个GET操作。现在在dev中,因为只有1个实例,所以很容易提供。但是当涉及到生产时,数据库位于5个不同的国家,因此是5个不同的实例(除了数据之外,所有的实例都是完全相同的)。我的想法是通过具有活动配置文件的应用程序运行它们,然后将它们连接到应用程序-{活动配置文件}.properties。如下所示:
application.properties:
spring.profiles.active=DB1
spring.application.name=demo应用程序-DB1.properties:
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:oracle:thin:@//host1:port/SID
spring.datasource.username=username
spring.datasource.password=password配置类:
@Configuration
@ConfigurationProperties("spring.datasource")
public class DBConfiguration {
private String url;
private String username;
private String password;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Profile("dev")
@Bean
public String devDBConnection(){
System.out.println("URL:"+getUrl());
System.out.println("username:"+getUsername());
System.out.println("password:"+getPassword());
return "DEV DB connection";
}
@Profile("uat")
@Bean
public String uatDBConnection() {
System.out.println("URL:" + getUrl());
System.out.println("username:" + getUsername());
System.out.println("password:" + getPassword());
return "UAT DB connection";
}
}因此,当我必须为另一个数据库启用API时,例如DB-3,我所要做的就是更改active.profile=DB3并创建一个新的文件应用程序-DB3.properties。
这似乎是一种标准做法,还是有一种方法可以更有效地做到这一点?
发布于 2021-03-23 17:13:42
一个不错的做法是传递环境变量或系统属性等配置。
因此,当这些变量发生变化时,您不需要更改代码/配置。
https://stackoverflow.com/questions/66759104
复制相似问题