1
resposta

Consider defining a bean of type 'br.vendas.servicos.domain.ServicosRepository' in your configuration no JAVA

Estou injetando um Respository que está em outro projeto, coloquei a dependência pelo Maven, mas ao compilar aparece esse erro:


APPLICATION FAILED TO START


Description:

Field servicoRepository in br.vendas.contratos.service.ContratosService required a bean of type 'br.vendas.servicos.domain.ServicosRepository' that could not be found.

The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true)

Action:

Consider defining a bean of type 'br.vendas.servicos.domain.ServicosRepository' in your configuration.

Meu Service esta assim:

package br.vendas.contratos.service;

import br.vendas.servicos.domain.ServicosRepository; import br.vendas.contratos.domain.*; import br.vendas.contratos.infra.exception.ValidacaoException; import br.vendas.contratos.repository.ContratosRepository; import br.vendas.contratos.service.validacoes.ValidadorContrato; import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

@Service public class ContratosService {

@Autowired
private ContratosRepository contratosRepository;

@Autowired
private ServicosRepository servicoRepository;

@Autowired
private List<ValidadorContrato> validadores;
public void contratar(DadosCadastroContratos dados){

    if(!servicoRepository.existsById(dados.idServico())){
        throw new ValidacaoException("Serviço inexistente!!!");
    }

    validadores.forEach(v -> v.validar(dados));

    var servico = servicoRepository.findById(dados.idServico());
    var contratos = new Contratos(dados);
    contratosRepository.save(contratos);

}

}

O que preciso fazer?

1 resposta

Olá, Carlos

O erro que você está recebendo indica que o Spring não conseguiu encontrar o bean 'br.vendas.servicos.domain.ServicosRepository' que você está tentando injetar.

Aqui estão algumas coisas que você pode verificar:

  1. Verifique se a classe 'ServicosRepository' está anotada com @Repository. Esta anotação é usada para indicar que a classe é um repositório Spring Data. Se a classe não estiver anotada com @Repository, o Spring não será capaz de detectá-la e criará o bean.
@Repository
public interface ServicosRepository extends JpaRepository<Servico, Long> {
    // seu código aqui
}
  1. Verifique se a anotação @ComponentScan (geralmente localizada na classe principal do seu aplicativo Spring Boot) está configurada para incluir o pacote onde 'ServicosRepository' está localizado. A anotação @ComponentScan diz ao Spring onde procurar por componentes, configurações e serviços. Se o pacote onde 'ServicosRepository' está localizado não estiver incluído no @ComponentScan, o Spring não será capaz de encontrar e criar o bean.
@SpringBootApplication
@ComponentScan(basePackages = {"br.vendas.servicos.domain", "br.vendas.contratos"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  1. Como você mencionou que 'ServicosRepository' está em outro projeto e você está incluindo isso como uma dependência Maven, verifique se o projeto 'servicos' está corretamente configurado para ser usado como uma dependência. Isso significa que ele precisa ter um arquivo pom.xml válido e precisa ser construído e instalado no seu repositório local Maven ou em um repositório remoto ao qual você tem acesso.

Espero ter ajudado e bons estudos!