当使用 MapStruct 生成映射器实现时,使用“jsr330”componentModel,micronaut 将在运行时尝试注入它们时抛出 NoSuchBeanException。一种解决方法是使用提供映射器对象的提供程序,但生成的代码应该可以工作。映射器定义:@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>在控制器上调用该方法时,我希望 Micronaut 找到 Mapstruct 生成的类(它用 @Singleton 注释),但结果却是消息:不存在 [com.example.FooBarMapper] 类型的 bean。确保该类被声明为 bean,如果您使用的是 Java 或 Kotlin,请确保您已启用注释处理。采用的路径:new SomeController([FooBarMapper mapper]) io.micronaut.context.exceptions.DependencyInjectionException:无法为类的参数 [mapper] 注入值:com.example.SomeController
添加回答
举报
0/150
提交
取消