Boa noite galera.
Estou fazendo um projeto em SpringBoot e sou meio iniciante na tecnologia já dei uma boa pesquisada e as respostas que encontro para o meu problema parecem não funcionar. Enfim aqui vai minha estrutura do projeto:
Quando vou rodar o projeto recebo o erro:
Field lowcreditRepository in com.sippulse.email.lowcredit.Service.LowCreditServiceImpl required a bean >of type ‘com.sippulse.email.lowcredit.Repository.SipPulseEmailLowCreditRepository’ 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 >‘com.sippulse.email.lowcredit.Repository.SipPulseEmailLowCreditRepository’ in your configuration.
Já tentei colocar ComponentsScan com o pacote base do projeto mas não funcionou.
@Service
@EnableScheduling
public class LowCreditServiceImpl implements LowCreditService {
@Autowired
private SipPulseEmailLowCreditRepository lowcreditRepository;
...
@Repository
public interface SipPulseEmailLowCreditRepository extends JpaRepository<Subscriber, Long> {
...
Eu não tenho o bean configurado no xml uma vez que pelo que eu li é um modelo mais antigo e por anotações deveria funcionar.
Desde já agradeço, caso seja necessaria mais alguma informação por favor me informem.
Manda o código da classe principal do projeto (a que tem @SpringBootApplication
).
@SpringBootApplication
public class LowCreditApplication {
public static void main(String[] args) {
SpringApplication.run(LowCreditApplication.class, args);
}
@Autowired
SipPulseEmailServiceImpl spmsi;
@Autowired
LowCreditServiceImpl lcs;
@Bean
void applicationRunner() {
lcs.checkLowCredit();
}
}
Eu ainda estou no meio do projeto, caso tenha alguma sujestão de melhora esse é um otimo momento 
Ps: Acabei mudando bastante coisas quebrando a cabeça com esse problema.
Essa classe LowCreditApplication
tem a anotação @SpringBootApplication
?
Tem sim não tinha saido por que o arroba estava na mesma linha das crases acredito.
Numa aplicação spring-boot, ao anotar uma classe como @Component, @Service ou @Repository, a injeção via @Autowired ou pelo construtor deve funcionar sem quaisquer configurações extras. Em função de teste, vc pq não gera um projeto novo utilizando o Spring Initializr e cria uma classe service e outra repository para ver se funciona.
Poisé hoje recriei o projeto utilizando o initializr para verificar se corrigia o erro. Parece que não escanei os pacotes por algum motivo apesar do application estar em uma pasta superior aos outros elementos do pacote e pelo que eu entendi das minhas pesquisas as pastar posteriores deveriam ser escaneadas.
Já que tenho sua atenção é correto a utilização do autowired em services certo?
Dê preferência de injetar via construtor. Deixa o código mais fácil de testar, se for o caso. Mas usar @Autowired não é errado tb não. Depende do cenário.
Vou criar um projeto teste no initializr e retorno.
Poisé debuggar no spring tá complicado pra mim hahaha.
Valeu pelos toques.
Outra coisa. Qdo tu for usar um @EnableQualquerCoisa
, tente deixar eles numa classe anotada com @Configuration
ou direto na classe principal. Fica melhor de ver o que está habilitado no seu projeto.