首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有自定义注释的Quarkus CDI

带有自定义注释的Quarkus CDI
EN

Stack Overflow用户
提问于 2022-03-22 12:24:19
回答 2查看 789关注 0票数 2

我目前正在开发一个应用程序,尽可能尊重六角形结构的原则。

因此,我的“域”模块(groupId:acme;artifactId:my-domain)不依赖于任何技术框架。

我的所有服务都使用一个自定义注释(它本身是域的一部分)进行注释:

代码语言:javascript
运行
复制
package acme.domain;

@Target({ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface DomainService {
}

但是,在我的"Quarkus应用程序“模块(groupId:acme;artifactId:app-quarkus)中,我需要注入在”域“模块(acme:domain)中定义的服务。

对于SpringBoot,它是具有以下注释的很容易注入这些域服务(基于自定义注释)

代码语言:javascript
运行
复制
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;

@SpringBootApplication
@ComponentScan(
    basePackageClasses = {CourtageSpringbootApplication.class, DomainService.class},
    includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = {DomainService.class})}
)
public class MySpringbootApplication {
}

是否有与Quarkus等同的@ComponentScan

注:我在app-quarkus/src/main/resources/application.properties中添加了以下行,但它不起作用:

代码语言:javascript
运行
复制
quarkus.index-dependency.courtage.group-id=acme
quarkus.index-dependency.courtage.artifact-id=my-domain

引发的异常:javax.enterprise.inject.UnsatisfiedResolutionException

EN

回答 2

Stack Overflow用户

发布于 2022-03-22 12:55:19

首先,我个人认为严格避免域模块中的CDI注释有点过分。但如果你真的想要的话,我可以看到两个选择:

  1. 您可以限制自己只将CDI注释放在自己的注释上,并使用@Stereotype。例如,如果您的@DomainService应该等同于@ApplicationScoped,则可以这样声明: @构造型@ApplicationScoped @Target({ElementType.TYPE}) @Retention(value = RetentionPolicy.RUNTIME) public @interface DomainService {}
  2. 如果您绝对坚持不应该在域模块中出现CDI注释,则可以创建一个Quarkus扩展,将@DomainService注册为自定义bean定义注释。Quarkus集成指南提供了更多有关这方面的详细信息:https://quarkus.io/guides/cdi-integration,您可以使用AutoAddScopeBuildItemBeanDefiningAnnotationBuildItem
票数 3
EN

Stack Overflow用户

发布于 2022-10-30 15:13:25

Spring为您注入独立的基于CDI的域提供了一种多么糟糕的方式,而使用CDI标准,您将有两种方法在编译时将maven依赖项中的任何外部CDI添加到CDI上下文中。

  1. 使用Jandex索引maven插件: org.jboss.jandex jandex-maven-plugin { jandex -maven-plugin-version} make-index jandex
  2. 配置级别(application.yaml):

夸克:

索引-相关性:高调:组-id: org.acme伪影-id:my-域

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71572027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档