Bug ao encontrar interfaces

Boa noite, tenho diversas interfaces java com a estrutura:

interfaces:
   interface1:
      impl:
         Interface1Impl.java
      params:
         Interface1FilterParams.java
      Interface1Interface.java

Ao rodar o projeto Spring ele diz que não foi possível encontrar a Interface2 como exemplo, mas a Interface1 que em estrutura e codigo é praticamente a mesma coisa é encontrada sem problemas. A grande maioria das Interfaces são encontradas, mas algumas não. Alguém já viu isso?

Todas as classes que estiverem abaixo na hierarquia de pacotes em relação ao local onde a classe principal está, serão automaticamente reconhecidas. Dê uma verificada na estrutura de pacotes do seu projeto para ver se tem algo diferente disso.

Boa noite Lucas, quanto a estrutura estão okay. Percebi que ao entrar no diretório dos repositories e após extender o JpaRepository extender também minhas interfaces, elas são encontradas e posso chamar seus métodos a partir do repository. Mas acredito que não deveria ser assim, visto que algumas funcionam quando chamo a classe de interface em si.

Quando falo que serão reconhecidos, não é conseguir importar e usar os métodos, mas sim serem reconhecidos pelo container do Spring para permitir a injeção.

Qual o erro que está acontecendo?

Opa Lucas, deixa eu te mostrar o erro e mais sobre o problema. O erro é este:

Could not autowire. No beans of 'CargoInterface' type found.

Minha importação e autowire estão desta forma:

private final CargoInterface cargoInterface;

public CargoService(
       MessageSource messageSource,
       CargoInterface cargoInterface
) {
    super(messageSource);
    this.cargoInterface = cargoInterface;
}

Minha estrutura está da seguinte forma:

image

image

Como exemplo, o pacote de atos ou bancoHoras tem a estrutura exatamente igual a de cargo, e as interfaces desses pacotes não tenho problema ao fazer o Autowire da forma como fiz a cima.

Posta o código da CargoInterface.

Bom dia staroski, minha interface está assim:

public interface CargoInterface {
    ListaETotalDTO<CargoDTO> findAllCargos(CargoFilterParams params);
}

As diversas interfaces tem apenas esse método e funcionam normalmente.

Acredito que, para essas interfaces serem detectadas pelo @Autowired, elas precisam estar anotadas com o @Component.

2 curtidas

Se a implementação da interface estiver anotada, a interface já é reconhecida.


@Breno_Henrrique

Posta a classe que implementa essa interface CargoInterface. Caso não tenha implementação, tem que incluir a anotação conforme observado pelo @staroski.

2 curtidas

@Lucas_Camara @staroski era isso mesmo que vocês estão dizendo, o pior é que foi pura falta de atenção porque eu anotei as outras classes com @Component e esqueci de anotar essa e outra hehe. Valeu galera.

2 curtidas