MAPSTRUCT-CustomerServiceImpl中的字段mapperDTO要求找到类型为'com.howtodoinjava.demo.mapper.MapperDTO'的bean

来源:爱站网时间:2021-09-16编辑:网友分享
我正在使用api rest构建一个原始应用程序,而我将使用mapstruct库,但我不能。当我尝试映射通过使用自定义对象在数据库上读取返回的数据时,我...

问题描述


我正在使用api rest构建一个原始应用程序,而我将使用mapstruct库,但我不能。当我尝试使用自定义对象映射通过读取数据库返回的数据时,出现以下错误

您能帮我解决这个问题吗?我收到以下错误

申请无法开始

说明:

无法找到com.howtodoinjava.demo.service.CustomerServiceImpl中的字段mapperDTO的类型为com.howtodoinjava.demo.mapper.MapperDTO的bean。

注入点具有以下注释:-@ org.springframework.beans.factory.annotation.Autowired(required = true)

动作:

考虑在您的配置中定义类型为'com.howtodoinjava.demo.mapper.MapperDTO'的bean。

我的文件

pom.xml

4.0.0com.howtodoinjavademo1.0.0-SNAPSHOTdemoDemo project for Spring Bootorg.springframework.bootspring-boot-starter-parent2.2.4.RELEASEUTF-8UTF-81.81.3.1.Final1.18.10jdt_aptorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-actuatororg.springframework.bootspring-boot-starter-hateoasorg.springframework.hateoasspring-hateoascom.ibm.db2jcc11.5.0.0org.springframework.bootspring-boot-starter-data-jpaorg.projectlomboklombokprovidedorg.mapstructmapstruct1.3.1.Finalorg.mapstructmapstruct-jdk81.3.1.Finalch.qos.logback.contriblogback-json-classic0.1.5ch.qos.logback.contriblogback-jackson0.1.5io.springfoxspringfox-swagger22.9.2io.springfoxspringfox-swagger-ui2.9.2commons-iocommons-io2.6org.springframework.bootspring-boot-starter-testtestde.bwaldvogelmongo-java-server1.16.0testorg.apache.maven.pluginsmaven-compiler-pluginorg.mapstructmapstruct-processor1.3.1.Finalorg.projectlomboklombok${org.projectlombok.version}org.springframework.bootspring-boot-maven-plugin

MapperDTO.java

@Mapper(componentModel="spring")
/*Durante la compilazione, MapStruct genererà un'implementazione di questa interfaccia.*/
public interface MapperDTO {

    //MapperDTO INSTANCE = Mappers.getMapper(MapperDTO.class);

    Customer customerDTOtoCustomer(CustomerDTO customerDTO);

    CustomerDTO customertoCustomerDTO(Customer customer);
}

ServiceImpl.java

@Autowired
    private MapperDTO mapperDTO;

    @Override
    public Customer getCustomerById(Integer id) throws RecordNotFoundException {
        Optional utentiEntity = repository.findById(id);
            try {
                if (utentiEntity.isPresent()) {
                    return mapperDTO.customerDTOtoCustomer(utentiEntity.get());
                } else {
                    throw new RecordNotFoundException("No entity record exist for given id");
                }
            }
            catch (Exception e ) {
                log.error(" message  " +e.getMessage(),e);
            }
            return null;
    }

demoapplication.java

@SpringBootApplication(scanBasePackages="com.howtodoinjava.demo")
@EnableJpaRepositories (basePackages="com.howtodoinjava.demo.repository")
@EntityScan(basePackages="com.howtodoinjava.demo.modelDTO")
@ComponentScan({"com.howtodoinjava.demo.service","com.howtodoinjava.demo.controller", "com.howtodoinjava.demo.mapper"})

public class DemoApplication {

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

}

思路一:


我认为mapstruct jar不正确,否则它将在运行时动态地将实体转换为dto并将dto转换为实体。但是,如果您不想使用mapstruct,则可以通过提供这样的方法实现来手动进行转换。

@Override
public ProductDTO toProductDTO(Products products) {
    if (products == null) {
        return null;
    }
    ProductDTO productDTO = new ProductDTO();
    productDTO.setName(products.getName());
    productDTO.setDescription(products.getDescription());
    productDTO.setPrice(products.getPrice());
    return productDTO;
}

@Override
public List toProductDTOs(List products) {

    if (products == null) {
        return null;
    }
    List listproductdto = new ArrayList();
    for (Products eachproducts : products) {
        listproductdto.add(toProductDTO(eachproducts));
    }
    return listproductdto;
}

@Override
public Products toProduct(ProductDTO productDTO) {
    // TODO Auto-generated method stub
    if (productDTO == null) {
        return null;
    }
    Products products = new Products();
    products.setName(productDTO.getName());
    products.setPrice(productDTO.getPrice());
    products.setDescription(productDTO.getDescription());
    return products;
}

有关更多详细信息,您可以检查我的示例,我也尝试过相同的示例。从这里enter link description here

思路二:


使用

   org.mapstructmapstruct-processor1.3.1.Finalprovidedorg.mapstructmapstruct1.3.1.Final

并且在编译时,请检查地图结构是否在目标中生成了MapperDTOImpl类

上一篇:期待`android:screenOrientation =“ unspecified”`或`“ fullSensor”

下一篇:如何通过联接将Spring Data JPA规范查询中的区分和排序结合在一起

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载