首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于MapStruct的NoSuchBeanException在Micronaut中生成的类

用于MapStruct的NoSuchBeanException在Micronaut中生成的类
EN

Stack Overflow用户
提问于 2019-01-11 04:57:46
回答 1查看 1.4K关注 0票数 2

当使用MapStruct生成映射器实现时,使用"jsr330“componentModel,micronaut将在运行时抛出NoSuchBeanException。

一种解决方法是使用将提供映射器对象的提供程序,但生成的代码应该可以工作。

映射器定义:

代码语言:javascript
复制
@Mapper(componentModel = "jsr330")
public interface FooBarMapper {
    Foo toFoo(Bar bar);
}

控制器:

代码语言:javascript
复制
@Controller
public class SomeController {
    @Inject
    public SomeController(FooBarMapper mapper) {
    }

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

pom.xml摘录:

代码语言:javascript
复制
<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,请确保启用了批注处理。采用的路径:新的映射器(FooBarMapper映射器) io.micronaut.context.exceptions.DependencyInjectionException:无法为类com.example.SomeController的参数映射器输入值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-13 16:14:52

我发现了Micronaut PR,它可以使用jsr330组件模型解决映射结构的问题。他们正计划在1.1.0中包含这个修复。

更新:该问题如果在1.1.0.RC1中修复

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54136772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档