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:


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