Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Bug] No beans of 'ModelMapper' type found.

Quando adiciono a notação @Autowired no ModelMapper da minha classe de serviço recebo a seguinte mensagem *Could not autowire. No beans of 'ModelMapper' type found. *

Já tentei todas as possíveis soluções que encontrei na web...

https://stackoverflow.com/questions/26952078/intellij-cannot-resolve-symbol-on-import?page=1&tab=scoredesc#tab-top

Imagem com print do problema

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>br.com.alurafood</groupId>
    <artifactId>pagamentos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>pagamentos</name>
    <description>MS de pagamentos da AluraFood</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

PagamentoService

package br.com.alurafood.pagamentos.service;

import br.com.alurafood.pagamentos.domain.dto.PagamentoDto;
import br.com.alurafood.pagamentos.domain.enums.StatusEnum;
import br.com.alurafood.pagamentos.domain.model.Pagamento;
import br.com.alurafood.pagamentos.repository.PagamentoRepository;
import lombok.AllArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import javax.persistence.EntityNotFoundException;

@Service
public class PagementoService {

    @Autowired
    private PagamentoRepository pagamentoRepository;
    @Autowired
    private ModelMapper modelMapper;

    public Page<PagamentoDto> obterTodos(Pageable paginacao) {
        return pagamentoRepository
                .findAll(paginacao)
                .map(p -> modelMapper.map(p, PagamentoDto.class));
    }

    public PagamentoDto obterPorId(Long id) {
        Pagamento pagamento = pagamentoRepository.findById(id)
                .orElseThrow(() -> new EntityNotFoundException());

        return modelMapper.map(pagamento, PagamentoDto.class);
    }

    public PagamentoDto criarPagamento(PagamentoDto dto) {
        Pagamento pagamento = modelMapper.map(dto, Pagamento.class);
        pagamento.setStatusEnum(StatusEnum.CRIADO);
        pagamentoRepository.save(pagamento);

        return modelMapper.map(pagamento, PagamentoDto.class);
    }

    public PagamentoDto atualizarPagamento(Long id, PagamentoDto dto) {
        Pagamento pagamento = modelMapper.map(dto, Pagamento.class);
        pagamento.setId(id);
        pagamento = pagamentoRepository.save(pagamento);
        return modelMapper.map(pagamento, PagamentoDto.class);
    }

    public void excluirPagamento(Long id) {
        pagamentoRepository.deleteById(id);
    }
}
3 respostas
solução!

Olá Antonio, você precisa dizer para o Spring que o ModelMapper é um @Bean, e assim o Spring vai saber injetá-lo no projeto. Como fazer isso?

Crie um novo package, sugiro o nome "config", dentro deste pacote crie uma Classe e dê o nome que quiser. Feito isso, em cima da classe coloque a anotação @Configuration, feito isso, nesta mesma classe crie um método com o nome qualquer que retorne um ModelMapper. Por exemplo

@Bean

public ModelMapper metodoQueCriaUmModelMapper(){
    return new ModelMapper();

}

Não esqueça de colocar o @Bean em cima do método.

Obrigado Rafael, deu certo :)

Também estou passsando por este mesmo problema. Só que eu não estou conseguindo importar a dependencia do Model Mapper. Até mesmo reinstalei meu SO e reconfigurei todo o ambiente (java, maven, etc). Tentei inserir a dependencia maven do ModelMapper, mas o maven não encontra. Estou usando o Ubuntu 22.10. Java Open Jdk 18.