我目前正在开发一个应用程序,尽可能尊重六角形结构的原则。
因此,我的“域”模块(groupId:acme;artifactId:my-domain)不依赖于任何技术框架。
我的所有服务都使用一个自定义注释(它本身是域的一部分)进行注释:
package acme.domain;
@Target({ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface DomainService {
}但是,在我的"Quarkus应用程序“模块(groupId:acme;artifactId:app-quarkus)中,我需要注入在”域“模块(acme:domain)中定义的服务。
对于SpringBoot,它是具有以下注释的很容易注入这些域服务(基于自定义注释):
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中添加了以下行,但它不起作用:
quarkus.index-dependency.courtage.group-id=acme
quarkus.index-dependency.courtage.artifact-id=my-domain引发的异常:javax.enterprise.inject.UnsatisfiedResolutionException
发布于 2022-03-22 12:55:19
首先,我个人认为严格避免域模块中的CDI注释有点过分。但如果你真的想要的话,我可以看到两个选择:
@Stereotype。例如,如果您的@DomainService应该等同于@ApplicationScoped,则可以这样声明:
@构造型@ApplicationScoped @Target({ElementType.TYPE}) @Retention(value = RetentionPolicy.RUNTIME) public @interface DomainService {}@DomainService注册为自定义bean定义注释。Quarkus集成指南提供了更多有关这方面的详细信息:https://quarkus.io/guides/cdi-integration,您可以使用AutoAddScopeBuildItem或BeanDefiningAnnotationBuildItem。发布于 2022-10-30 15:13:25
Spring为您注入独立的基于CDI的域提供了一种多么糟糕的方式,而使用CDI标准,您将有两种方法在编译时将maven依赖项中的任何外部CDI添加到CDI上下文中。
夸克:
索引-相关性:高调:组-id: org.acme伪影-id:my-域
https://stackoverflow.com/questions/71572027
复制相似问题