Micronaut编程创建PostgreSQL数据源报jdbcConfiguration缺失错误求助
问题原因
你手动创建了DataSource bean,但Micronaut Data JDBC的核心组件DefaultJdbcRepositoryOperations依赖DataJdbcConfiguration bean——这个配置bean通常由框架从配置文件自动生成,你当前只提供了数据源,缺少对应的配置实例,导致依赖注入失败。
解决方案
方案一:使用Micronaut自动配置(推荐)
删除你自定义的HikariDataSourceFactory,通过配置文件让框架自动生成所有必要的bean。在src/main/resources/application.yml中添加以下配置:
datasources: default: url: jdbc:postgresql://localhost:5432/db username: username password: password driverClassName: org.postgresql.Driver hikari: allow-pool-suspension: true
Micronaut会自动识别配置,创建DataSource、DataJdbcConfiguration及其他相关组件,完全满足Data JDBC的依赖需求。
方案二:手动补充配置Bean(仅适用于特殊场景)
如果必须手动创建DataSource,需要在工厂类中同时提供DataJdbcConfiguration bean:
@Factory public class HikariDataSourceFactory { @Singleton @Primary public DataSource dataSource() { HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:postgresql://localhost:5432/db"); config.setUsername("username"); config.setPassword("password"); config.setDriverClassName("org.postgresql.Driver"); config.setAllowPoolSuspension(true); return new HikariUrlDataSource(config); } @Singleton @Primary public DataJdbcConfiguration jdbcConfiguration(BeanContext beanContext) { DataJdbcConfiguration jdbcConfig = new DataJdbcConfiguration("default", beanContext); // 可选:设置数据库方言等额外配置 jdbcConfig.setDialect(PostgresDialect.class); return jdbcConfig; } }
这样就能为DefaultJdbcRepositoryOperations提供所需的配置依赖,解决报错问题。
内容的提问来源于stack exchange,提问作者vishal
相关产品推荐
相关产品推荐

