java - 在 Spring boot 中动态配置 DataSourceBuilder url

标签 java spring spring-boot datasource

我在 application.properties 文件中定义了以下属性。

sample.db.serverName=10.10.10.10
sample.db.serverPort=1234
sample.db.databaseName=sampleDb

现在我使用 DataSourceBuilder,但我需要使用所有可用信息构建 url,因为它只有 url 参数。

我不知道如何将属性读入 POJO 并获取 DataSource 类中的句柄

public DataSource dataSource()
{
   //handle for POJO
   //StringBuilder to build the url
   return DataSourceBuilder.create.url(str.toString()).build();
}

P.S:我提到了这个link ,但这与我的问题不同。

最佳答案

您可以创建配置属性类(简单的 POJO):

@ConfigurationProperties(prefix = "sample.db")
public class DbProperties {
    private String serverName;
    private String serverPort;
    private String databaseName;

    // getters and setters
}

之后,您可以告诉 Spring 创建此类的实例并填充属性文件中的属性:

@EnableConfigurationProperties(value = DbProperties.class)

最后,您可以将它们自动连接到创建数据源的方法中:

@Configuration
@EnableConfigurationProperties(value = DbProperties.class)
public class DatasourceConfig {

    @Bean
    public DataSource dataSource(final DbProperties properties) {
        // do whatever you need
        return DataSourceBuilder.create.url(str.toString()).build();
    }
}

关于java - 在 Spring boot 中动态配置 DataSourceBuilder url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53321894/

相关文章:

java - 如何在 thymeleaf 的 onClick 方法中设置链接?

java - 简单的 JPA findBy 请求需要 4 分钟,而 SQL 查询需要 365 毫秒

java - 为什么 isInterrupted() 给出 Thread.currentThread().isInterrupted() 以外的结果(JAVA)

java - 无法解决此错误 : Failed to configure a DataSource

java - 如何在camel蓝图中引用 "disable"bean?

spring - 如何在 Spring 3.1 中构造函数 Autowiring HttpServletResponse?

java - 在 Azure Tomcat 上部署 Java Web 应用程序和 Web 服务的差异

java - 在服务中调用 DAO 时出现 AbstractMethodError 和 null maper

java - 使用 java Apache PDFBOX 添加 HTML 标记

java - 使用 ssh-net 的 ruby​​ 脚本中的文件路径问题