我有一个要求,我需要在 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注解在应用程序启动时配置数据源。 任何人都可以帮助我实现这一目标吗?
你有没有尝试过类似的事情:
@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;
}
}