首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个RDBMS数据库的单一Spring引导

多个RDBMS数据库的单一Spring引导
EN

Stack Overflow用户
提问于 2021-03-23 15:47:48
回答 1查看 19关注 0票数 0

我有一个要求,我需要将一个小API连接到Oracle DB,以便执行几个GET操作。现在在dev中,因为只有1个实例,所以很容易提供。但是当涉及到生产时,数据库位于5个不同的国家,因此是5个不同的实例(除了数据之外,所有的实例都是完全相同的)。我的想法是通过具有活动配置文件的应用程序运行它们,然后将它们连接到应用程序-{活动配置文件}.properties。如下所示:

application.properties:

代码语言:javascript
复制
spring.profiles.active=DB1
spring.application.name=demo

应用程序-DB1.properties:

代码语言:javascript
复制
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:oracle:thin:@//host1:port/SID
spring.datasource.username=username
spring.datasource.password=password

配置类:

代码语言:javascript
复制
@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。

这似乎是一种标准做法,还是有一种方法可以更有效地做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-23 17:13:42

一个不错的做法是传递环境变量或系统属性等配置。

因此,当这些变量发生变化时,您不需要更改代码/配置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66759104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档