有没有一种方法可以在 Spring Boot 中仅在到达端点后创建数据源,而不是在使用 @Configuration 注释启动时创建数据源

问题描述 投票:0回答:1

我有一个要求,我需要在 Spring Boot 应用程序中创建一个数据源来进行数据库操作。 目前,我正在使用 JpaRepository 来使用通过 @Configuration 注释类以编程方式创建的数据源来执行此操作。

HikariDataSource dataSource = new HikariDataSource();

dataSource.setJdbcUrl("<url with the host name, port and database>"); dataSource.setUsername("userName");

 dataSource.setPassword("xxxxxx");

 dataSource.setDriverClassName("org.postgresql.Driver"); // Set the PostgreSQL driver class explicitly dataSource.setMaximumPoolSize(1);

 dataSource.setMinimumIdle(5);

 return dataSource;

应用程序启动时,数据源已配置并正常工作。

但我实时的要求是, 数据源属性(数据库名称、用户名、密码等)在应用程序启动时不可用,当从其余控制器触发任何一个端点时,基于一个强制标头,我将进行一次服务调用来获取数据库详细信息,需要首次创建数据源并缓存以供进一步使用。

对于互联网上的Spring boot,建议仅使用@Configuration注解在应用程序启动时配置数据源。 任何人都可以帮助我实现这一目标吗?

spring-boot jpa datasource
1个回答
0
投票

你有没有尝试过类似的事情:

@Configuration
public class DataSourceConfig {

    @Bean
    @Lazy(true)
    public DataSource dataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:postgresql://localhost:5432/mydb");
        dataSource.setUsername("username");
        dataSource.setPassword("password");
        dataSource.setDriverClassName("org.postgresql.Driver");
        dataSource.setMaximumPoolSize(1);
        dataSource.setMinimumIdle(5);

        return dataSource;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.