當(dāng)使用 MapStruct 生成映射器實(shí)現(xiàn)時(shí),使用“jsr330”componentModel,micronaut 將在運(yùn)行時(shí)嘗試注入它們時(shí)拋出 NoSuchBeanException。一種解決方法是使用提供映射器對(duì)象的提供程序,但生成的代碼應(yīng)該可以工作。映射器定義:@Mapper(componentModel = "jsr330")public interface FooBarMapper { Foo toFoo(Bar bar);}控制器:@Controllerpublic 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>在控制器上調(diào)用該方法時(shí),我希望 Micronaut 找到 Mapstruct 生成的類(它用 @Singleton 注釋),但結(jié)果卻是消息:不存在 [com.example.FooBarMapper] 類型的 bean。確保該類被聲明為 bean,如果您使用的是 Java 或 Kotlin,請確保您已啟用注釋處理。采用的路徑:new SomeController([FooBarMapper mapper]) io.micronaut.context.exceptions.DependencyInjectionException:無法為類的參數(shù) [mapper] 注入值:com.example.SomeController
1 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
我發(fā)現(xiàn)Micronaut PRjsr330
應(yīng)該使用組件模型解決 mapstruct 的問題。他們計(jì)劃將修復(fù)程序包含在1.1.0
.
更新:如果解決了這個(gè)問題1.1.0.RC1
添加回答
舉報(bào)
0/150
提交
取消