我正在尝试在我的多模块项目中进行依赖项注入(inject),我想从库模块注入(inject)一个 bean。然而,它失败了,因为它找不到 bean。
项目根settings.gradle
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
plugins {
id 'io.quarkus' version "${quarkusPluginVersion}"
}
}
include ':service-module'
include ':library-module'
服务模块build.gradle
尝试编译以及实现
dependencies {
compile project(":library-module")
// implementation project(":library-module")
}
来自库模块的 Bean
import javax.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class LibraryBean {
public void hello() {
System.out.println("Hello");
}
}
服务模块发生注入(inject)的地方
@ApplicationScoped
public class Application {
@Inject
LibraryBean libraryBean;
}
堆栈跟踪
Unsatisfied dependency for type com.mylibrary.LibraryBean and qualifiers [@Default] - java member: com.myservice.Application#LibraryBean - declared on CLASS bean [types=[com.myservice.Application, java.lang.Object], qualifiers=[@Default, @Any], target=com.myservice.Application]
我不确定此问题是否与 Quarkus 相关,或者是 CDI 和 Gradle 模块存在的一般问题。
如何让 DI 跨模块工作?
最佳答案
您的库模块中有 beans.xml
文件吗?有关更多信息,请参阅此问题/答案:https://stackoverflow.com/a/55513723/742081
关于gradle - Quarkus 依赖注入(inject)因 Gradle 库模块中的 bean 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591090/