Java 无法注入默认MySQL数据源
我正在努力注入默认数据源,但出现以下错误: javax.enterprise.inject.IllegalProductException:正常作用域生产者方法不能返回null: io.quarkus.Agrol.runtime.DataSourceProducer.createDefaultDataSource() 这是我目前的情况: 应用程序属性Java 无法注入默认MySQL数据源,java,mysql,jdbc,datasource,quarkus,Java,Mysql,Jdbc,Datasource,Quarkus,我正在努力注入默认数据源,但出现以下错误: javax.enterprise.inject.IllegalProductException:正常作用域生产者方法不能返回null: io.quarkus.Agrol.runtime.DataSourceProducer.createDefaultDataSource() 这是我目前的情况: 应用程序属性 quarkus.datasource.driver = com.mysql.cj.jdbc.Driver quarkus.datasource.j
quarkus.datasource.driver = com.mysql.cj.jdbc.Driver
quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3307/sandbox
quarkus.datasource.username=root
quarkus.datasource.password=password
quarkus.datasource.jdbc.min-size=0
quarkus.datasource.jdbc.max-size=11
quarkus.datasource.users.driver = com.mysql.cj.jdbc.Driver
quarkus.datasource.users.url=jdbc:mysql://localhost:3307/sandbox
quarkus.datasource.users.username=root
quarkus.datasource.users.password=password
quarkus.datasource.users.min-size=0
quarkus.datasource.users.max-size=11
MyClass.java
@ApplicationScoped
public class MyClass {
@Inject
AgroalDataSource dataSource;
void methodUsingDataSource() {...}
}
@ApplicationScoped
public class MyClass {
@Inject
@DataSource("users")
AgroalDataSource dataSource;
void methodUsingDataSource() {...}
}
但是,我让它使用与默认配置相同的命名数据源:
应用程序属性
quarkus.datasource.driver = com.mysql.cj.jdbc.Driver
quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3307/sandbox
quarkus.datasource.username=root
quarkus.datasource.password=password
quarkus.datasource.jdbc.min-size=0
quarkus.datasource.jdbc.max-size=11
quarkus.datasource.users.driver = com.mysql.cj.jdbc.Driver
quarkus.datasource.users.url=jdbc:mysql://localhost:3307/sandbox
quarkus.datasource.users.username=root
quarkus.datasource.users.password=password
quarkus.datasource.users.min-size=0
quarkus.datasource.users.max-size=11
MyClass.java
@ApplicationScoped
public class MyClass {
@Inject
AgroalDataSource dataSource;
void methodUsingDataSource() {...}
}
@ApplicationScoped
public class MyClass {
@Inject
@DataSource("users")
AgroalDataSource dataSource;
void methodUsingDataSource() {...}
}
你知道如何纠正这种行为吗?这会导致我在设置Hibernate时出现问题。删除此行:
quarkus.datasource.driver = com.mysql.cj.jdbc.Driver
用这个代替:
quarkus.datasource.db-kind = mysql
您在默认数据源中混合了不推荐的和新的配置属性,而您的组合不起作用
您给出的命名数据源示例仅使用旧的配置属性,因此它可以正常工作
现在我需要理解为什么没有正确的错误消息。我将继续改进这一点。应用程序不是以这种配置启动的。我得到以下错误:原因:javax.enterprise.inject.UnsatifiedResolutionException:类型io.Agrol.api.AgrolDataSource和限定符未满足依赖关系[@Default]这是哪个版本的Quarkus?这是1.2.0.finalLevery自从我将Quarkus版本从1.2.0.Final更新到1.4.1.Final以来,一切都很好。谢谢你的支持!是的,我们更改了数据源配置,您在默认数据源配置中使用了1.2不支持的一些属性。这就是为什么它没有被创建。