Quarkus注入EJB接口实现报Unsatisfied dependency错误如何解决?
Quarkus注入EJB接口Unsatisfied dependency报错解决方案
该报错的核心原因是Quarkus默认未集成EJB扩展,无法识别@Local/@Remote注解,CDI容器不会将实现类注册为对应EJB接口的可注入Bean,因此按接口类型注入时匹配不到实例。
解决方案
你可以根据自身需求选择以下任意一种方案:
方案一:仅用CDI实现注入(无EJB特殊需求优先选择)
直接删除IAdministracionPersonaLocal接口上的@Local/@Remote注解即可。
纯CDI场景下,只要实现类添加了@ApplicationScoped等作用域注解,容器会自动识别其实现的接口,允许直接按接口类型注入,无需给接口加额外注解。
方案二:保留EJB能力的处理方式
如果需要使用EJB的远程调用、事务语义等专属能力,按以下步骤操作:
- 首先在项目构建配置中引入Quarkus EJB扩展
Maven项目pom.xml添加依赖:
Gradle项目<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-ejb</artifactId> </dependency>build.gradle添加依赖:implementation("io.quarkus:quarkus-ejb") - (可选)将实现类
AdministracionPersonaBean的@ApplicationScoped注解替换为EJB规范的@Stateless注解,更符合EJB开发约定。 - 如果接口和实现类存放在独立子模块中,需要给子模块添加Jandex索引插件,保证Quarkus可以扫描到对应注解:
Maven子模块的pom.xml添加插件配置:<build> <plugins> <plugin> <groupId>org.jboss.jandex</groupId> <artifactId>jandex-maven-plugin</artifactId> <version>1.2.3</version> <executions> <execution> <id>make-index</id> <goals> <goal>jandex</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
完成对应配置后重启项目即可解决该报错。
内容的提问来源于stack exchange,提问作者xricoxdrumsx
相关产品推荐
相关产品推荐

