java - Java SE + Apache DeltaSpike:类型存储库的不满足依赖项
问题描述
我正在尝试将DeltaSpike Data模块与Weld一起使用,但每个带有注释的类都@Repository
在我的 IDE 中显示警告,并在运行时显示异常。
我多次尝试遵循DeltaSpike 文档,检查Baeldung和各种文章/论坛,但没有找到解决方案。
有谁知道我可能缺少什么以允许正确注入存储库?
IDE 警告
Managed Bean must be a concrete class or @Decorator
运行时异常
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type ExampleRepo with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public com.example.myapp.services.ExampleService(ExampleRepo)
示例存储库
@Repository(forEntity = Data.class)
public interface ExampleRepo extends EntityRepository<Example, Long> {
Data findExampleById(long id);
@Modifying
@Query("UPDATE Data AS e SET e.locale = ?1 WHERE e.id = ?2")
int updateLocale(final Locale locale, final long id);
@Modifying
@Query("UPDATE Data AS g SET g.reactTranslation = ?1 WHERE g.id = ?2")
int updateReactTranslation(final boolean toggle, final long id);
}
摇篮
plugins {
id "io.spring.dependency-management" version "1.0.8.RELEASE"
}
ext {
deltaSpikeVersion = "1.9.2"
}
dependencies {
// DeltaSpike Extensions
implementation "org.apache.deltaspike.modules:deltaspike-data-module-api:${deltaSpikeVersion}"
runtimeOnly "org.apache.deltaspike.modules:deltaspike-data-module-impl:${deltaSpikeVersion}"
implementation "org.apache.deltaspike.modules:deltaspike-scheduler-module-api:${deltaSpikeVersion}"
runtimeOnly "org.apache.deltaspike.modules:deltaspike-scheduler-module-impl:${deltaSpikeVersion}"
// Database
implementation "org.hibernate:hibernate-core:${hibernateVersion}"
implementation "org.hibernate:hibernate-c3p0:${hibernateVersion}"
runtimeOnly "mysql:mysql-connector-java:8.0.18"
}
dependencyManagement {
imports {
mavenBom "org.apache.deltaspike.distribution:distributions-bom:${deltaSpikeVersion}"
}
}
澄清一下,以下也是项目的隐式依赖。
解决方案
我错过了 Java SE 特定指令: https ://deltaspike.apache.org/documentation/cdiimp.html#javase6
我不得不使用CdiContainer
DeltaSpike 而不是SeContainer
Weld。
dependencies {
implementation "org.apache.deltaspike.cdictrl:deltaspike-cdictrl-api:${deltaSpikeVersion}"
runtimeOnly "org.apache.deltaspike.cdictrl:deltaspike-cdictrl-weld:${deltaSpikeVersion}"
}
推荐阅读
- python - 如何在python中打开文件,读取注释(“#”),在注释后面找到一个单词并选择它后面的单词?
- android - 当我部署目标时,Android 资源链接失败
- c - C 标识符名称:哪个编译器有什么用?
- ios - 如何删除数组中的重复对象?
- object - 程序中对象和变量的引用是如何工作的?
- oracle - Toad for Oracle 12.12:文字和环境变量有什么区别?
- javascript - 如何在鼠标悬停时显示缩略图?
- python - scrapy 没有显示阿拉伯字母
- python - Python:附加两个正则表达式
- firebase - 让 Firebase 云存储 URL 不可猜测?