簡體   English   中英

Micronaut 中 MapStruct 生成類的 NoSuchBeanException

[英]NoSuchBeanException for MapStruct generated classes in Micronaut

當使用 MapStruct 生成映射器實現時,使用“jsr330”組件模型,當嘗試注入它們時,micronaut 將在運行時拋出 NoSuchBeanException。

一種解決方法是使用提供映射器對象的提供程序,但生成的代碼應該可以工作。

映射器定義:

@Mapper(componentModel = "jsr330")
public interface FooBarMapper {
    Foo toFoo(Bar bar);
}

控制器:

@Controller
public class SomeController {
    @Inject
    public SomeController(FooBarMapper mapper) {
    }

    @Get
    public String foo() {
        return "foo";
    }
}

pom.xml 摘錄:

<annotationProcessorPaths>
    <path>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${mapstruct.version}</version>
    </path>
    <path>
        <groupId>io.micronaut</groupId>
        <artifactId>micronaut-inject-java</artifactId>
        <version>${micronaut.version}</version>
    </path>
    <path>
        <groupId>io.micronaut.configuration</groupId>
        <artifactId>micronaut-openapi</artifactId>
        <version>${micronaut.version}</version>
    </path>
</annotationProcessorPaths>

在控制器上調用該方法時,我希望 Micronaut 找到 Mapstruct 生成的類(它用 @Singleton 注釋),但結果是

消息:不存在 [com.example.FooBarMapper] 類型的 bean。 確保將類聲明為 bean,如果您使用的是 Java 或 Kotlin,請確保已啟用注釋處理。 采用的路徑:new SomeController([FooBarMapper mapper]) io.micronaut.context.exceptions.DependencyInjectionException:無法為類的參數 [mapper] 注入值:com.example.SomeController

我發現Micronaut PR應該使用jsr330組件模型解決 mapstruct 的問題。 他們計划在1.1.0包含此修復程序。

更新:如果在1.1.0.RC1修復該問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM