当前位置: 首页 > 知识库问答 >
问题:

找不到字段映射器,请考虑定义bean

农波涛
2023-03-14

客户服务实施

package com.application.service.impl;

@Service
public class CustomerServiceImpl implements CustomerService {

@Autowired
private CustomerRepository custRepo;

@Autowired
private CustomerMapper mapper;

@Autowired
private HMergeMapper mergeMapper;

@Override
public CustomerViewData addCustomer(CustomerData custData) {
    Customer cr = this.mapper.customerDataToCustomer(custData);
    cr = this.custRepo.save(cr);
    return this.mapper.fromCustToCustViewData(cr);
}
}

客户服务界面

package com.application.service;

@Component
public interface CustomerService {

CustomerViewData addCustomer(CustomerData custData);

}

客户映射器

package com.application.mapper;

@Mapper(componentModel = "spring")
public interface CustomerMapper {
CustomerMapper INSTANCE = Mappers.getMapper(CustomerMapper.class);

CustomerViewData fromCustToCustViewData(Customer entity);
}

主类

package com.application;

@EnableSwagger2
@SpringBootApplication
@ComponentScan(basePackages = { "com.application", "com.application.mapper" })
@EnableJpaRepositories(basePackages = {"com.application.repository"})
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

错误-

应用程序启动失败

说明:

com中的字段映射器。应用服务实施。CustomerServiceImpl需要“com”类型的bean。应用映射器。找不到CustomerMapper“”。

措施:

考虑定义“com”类型的bean。应用映射器。配置中的CustomerMapper。

Note - Package structure is Main Class in com.appliaction,
 Mapper class in com.application.mapper, 
 CustomerService class in com.application.service,
 CustomerServiceImpl class in com.application.service.impl

共有2个答案

百里弘致
2023-03-14

这是固定的,问题是maven插件。

         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.3.0.Final</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
蒋星驰
2023-03-14

删除CustomerMapper实例=映射器。getMapper(CustomerMapper.class) 内部CustomerMapper。班在我看来,这就像是递归的地狱。

您在CustomerMapper中。class,只需使用此操作即可

CustomerMapper.class之外,只需使用自动装配即可使用映射器类。

您已经定义了组件模型="Spring",因此它将绑定到Spring上下文。不要将映射器的手动检索与Spring上下文混合使用。

这可能会导致不创建实例,然后spring抛出错误。

 类似资料:
  • 在spring Boot1.5.9上创建spring boot应用程序时,我收到以下错误消息。有谁能帮忙吗?提前道谢。 Oracle 11g数据库。 请找到我在pom.xml中使用的以下类: Java代码-应用程序: Java代码存储库: Java代码服务:

  • 例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?

  • 我的Spring Boot MVC REST应用程序有问题。我试图自己解决这个问题几天,但还没有找到解决方案。希望你能帮我:) 我的主应用程序: 我的配置类: TestTableRepository.java: IVectorData: 这里是: 问题是Spring找不到“testTableRepository”Bean。 错误代码: 但有一件有趣的事是,第二个自动连线的候选者“IVectorDa

  • 问题内容: 如果发现某些文档不包含排序条件中使用的字段,Elasticsearch会在解析时引发查询。 SearchParseException:解析失败[未找到[价格]的映射以进行排序] 即使缺少某些字段,如何才能成功搜索这些文档? 问题答案: 在深入研究之后,我找到了下面给出的解决方案。应该在sort子句中明确设置为。 有关更多信息,请查看Elasticsearch参考: 缺失值 忽略未映射的

  • 如果发现某些文档不包含排序条件中使用的字段,Elasticsearch在分析查询时抛出。 SearchParseException:解析失败[找不到[价格]的映射以便对其进行排序] 如何成功搜索这些文档,即使有些文档缺少字段?

  • 我还在学习ReactJS。我正在挑战自己写一个非常基本的待办事项应用程序(就像一个人一样),我有一个问题,调用onhtml函数。 这里的问题是不能调用,因为它不在render函数的返回调用中 要从map函数内部访问handleClick,我需要做什么?