为了账号安全,请及时绑定邮箱和手机立即绑定

Micronaut 中 MapStruct 生成的类的 NoSuchBeanException

Micronaut 中 MapStruct 生成的类的 NoSuchBeanException

萧十郎 2022-04-28 16:56:34
当使用 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
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

我发现Micronaut PRjsr330应该使用组件模型解决 mapstruct 的问题。他们计划将修复程序包含在1.1.0.

更新:如果解决了这个问题1.1.0.RC1


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号