Field in required a bean of type that could not be found e Nullpoint

Eai pessoal!

Estou tentando subir uma aplicação e estou com alguns problemas. Quando consigo subir, estou tomando Nullpoint ao invocar o método ‘listAll’, e quando tento resolver o nullpoint (colocando um construtor no meu service), a aplicação não sobe por conta do bean que não é encontrado no meu repository.

Quando testo a aplicação com o contrutor (seja ele padrão ou vazio) eu recebo o erro;

Field serieRepository in academy.devdojo.springboot2.service.SerieService required a bean of type 'academy.devdojo.springboot2.repository.SerieRepository' that could not be found.

Action: Consider defining a bean of type 'academy.devdojo.springboot2.repository.SerieRepository' in your configuration.

Quando anoto meu service com @NoArgsConstructor consigo subir a aplicação, mas não consigo chamar o método listAll;

There was an unexpected error (type=Internal Server Error, status=500).
Cannot invoke "academy.devdojo.springboot2.repository.SerieRepository.findAll()" because "this.serieRepository" is null
java.lang.NullPointerException: Cannot invoke "academy.devdojo.springboot2.repository.SerieRepository.findAll()" because "this.serieRepository" is null

Já testei colocar construtor padrão, construtor vazio, anotar ela com @AllArgsConstructor, mas ela não sobe. Só sobe apenas quando deixo sem construtor, ou anotando ela com @NoArgsConstructor.
Vou colocar meu service e meu repository aqui:

Service:

package academy.devdojo.springboot2.service;

import academy.devdojo.springboot2.domain.Serie;
import academy.devdojo.springboot2.repository.SerieRepository;
import academy.devdojo.springboot2.requests.SeriePostRequestBody;
import academy.devdojo.springboot2.requests.SeriePutRequestBody;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

@Service
@NoArgsConstructor
public class SerieService {

    private SerieRepository serieRepository;

    public List<Serie> listAll(){
        return serieRepository.findAll();
    }

    public Serie findByIdOrThrowBadRequestException(long id){
        return serieRepository.findById(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.BAD_REQUEST, "Serie not found"));
    }

    public Serie save(SeriePostRequestBody seriePostRequestBody) {
        return serieRepository.save(Serie.builder().name(seriePostRequestBody.getName()).build());
    }

    public void delete(long id) {
        serieRepository.delete(findByIdOrThrowBadRequestException(id));
    }

    public void replace(SeriePutRequestBody seriePutRequestBody) {
        Serie savedSerie = findByIdOrThrowBadRequestException(seriePutRequestBody.getId());
        Serie serie = Serie.builder().id(savedSerie.getId()).name(seriePutRequestBody.getName()).build();
        serieRepository.save(serie);
    }

}

.
.

Repository:

package academy.devdojo.springboot2.repository;

import academy.devdojo.springboot2.domain.Serie;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface SerieRepository extends JpaRepository<Serie, Long> {




}

Pelo o que pesquisei o erro está no repository que está me retornando null, mas possuo um outro projeto que está bem dizer idêntico neste quesito (o repository apenas implementa os métodos do JpaRepository, mas não possui métodos.), mas funciona normalmente.

Gostaria de saber se algum de vocês já teve algum problema parecido. Desde já agradeço!

O erro não está no repository em si.

O erro é que o Spring não está encontrando seu repository para poder injetá-lo no seu service.

Eu tenho uma ideia do que pode ser. Vc pode me mostrar como está o arquivo onde está seu método main? Eu gostaria de vê-lo inteiro, por favor.

1 curtida

O main ta na branch principal do projeto.

image
.
.
.

Vou te enviar o psvm pra você ver também;

package academy.devdojo.springboot2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

@Component
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Springboot2EssentialsApplication {

	public static void main(String[] args) {
		SpringApplication.run(Springboot2EssentialsApplication.class, args);
	}

	@Bean
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}

}```

Achei que poderia ser porque sua @SpringBootApplication estava em um subpacote, mas tá certinho assim.

No seu pom.xml vc colocou a dependência abaixo?

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Outra coisa: No seu service, anota o campo serieRepository com @Autowired ou cria um constructor com um SerieRepository como parametro. Quando vc fizer isso vai dar erro, aí vc copia o erro todinho, inteirinho, sem cortar nadinha de nada e cola aqui pra gente analisar.

1 curtida

Sim, coloquei a extensão do starter-data-jpa.

Também fiz um teste com o @Autowired, mas não deu certo. Coloquei a anotação novamente no serieRepository. O resultado foi esse (creio que o mesmo):

Description:

Field serieRepository in academy.devdojo.springboot2.service.SerieService required a bean of type 'academy.devdojo.springboot2.repository.SerieRepository' that could not be found.


Action:

Consider defining a bean of type 'academy.devdojo.springboot2.repository.SerieRepository' in your configuration.

Agora criei um construtor padrão. E a aplicação subiu. Mas no momento de chamar o método listAll tomei NullPointer:

java.lang.NullPointerException: Cannot invoke "academy.devdojo.springboot2.repository.SerieRepository.findAll()" because "this.serieRepository" is null
	at academy.devdojo.springboot2.service.SerieService.listAll(SerieService.java:26) ~[classes/:na]
	at academy.devdojo.springboot2.controller.SerieController.list(SerieController.java:31) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.10.jar:6.0.10]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.10.jar:6.0]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.10.jar:6.0.10]
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.10.jar:6.0]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.10.jar:6.0.10]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.10.jar:6.0.10]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.10.jar:6.0.10]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

Vou te enviar o meu pom.xml também que não enviei.

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>3.1.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>academy.devdojo</groupId>
	<artifactId>springboot2-essentials</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot2-essentials</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.33</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</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>
	</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>

Acho que não irá precisar, mas estou enviando o controller também:

Controller:
.
.

package academy.devdojo.springboot2.controller;

import academy.devdojo.springboot2.domain.Serie;
import academy.devdojo.springboot2.requests.SeriePostRequestBody;
import academy.devdojo.springboot2.requests.SeriePutRequestBody;
import academy.devdojo.springboot2.service.SerieService;
import academy.devdojo.springboot2.util.DateUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@RestController
@RequestMapping("series")
@Log4j2
@RequiredArgsConstructor
public class SerieController {

    private final DateUtil dateUtil;
    private final SerieService serieService;

    @GetMapping(path = "list")
    public ResponseEntity<List<Serie>> list() {
        log.info(dateUtil.formatLocalDateTimeToDatabaseStyle(LocalDateTime.now()));
        return new ResponseEntity<>(serieService.listAll(), HttpStatus.OK);
    }
    @GetMapping(path = "/{id}")
    public ResponseEntity<Serie> findById(@PathVariable long id){
        return ResponseEntity.ok(serieService.findByIdOrThrowBadRequestException(id));
    }
    @PostMapping
    public ResponseEntity<Serie> save(@RequestBody SeriePostRequestBody seriePostRequestBody){
        return new ResponseEntity<>(serieService.save(seriePostRequestBody), HttpStatus.CREATED);
    }
    @DeleteMapping(path = "/{id}")
    public ResponseEntity<Void> delete(@PathVariable long id){
        serieService.delete(id);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }
    @PutMapping
    public ResponseEntity<Void> replace(@RequestBody SeriePutRequestBody seriePutRequestBody){
        serieService.replace(seriePutRequestBody);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }



}

Faz do jeitinho que eu pedi ali em cima e posta o erro completinho aqui pra nós.

Vc postou o stacktrace com o NullPointerException, mas esta exceção não nos interessa. Quando vc cria um construtor sem parametros e não usa o @Autowired o Spring simplesmente não sabe que é para injetar um bean ali. Vc precisa anotar o campo com @Autorwired ou criar o constructor. Esse jeito que vc mostrou, usando o @RequiredArgsConstructor tá perfeito, roda com ele e mostra o erro completo, por favor.

Entendi. Testei subir a aplicação das duas formas; com o @Autowired e com o construtor.

Com o construtor a aplicação subiu normalmente. Já com o serieRepository anotado com o @Autowired deu esse erro aqui:

 .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.1)

2023-07-24T17:10:19.233-03:00  INFO 648 --- [  restartedMain] a.d.s.Springboot2EssentialsApplication   : Starting Springboot2EssentialsApplication using Java 17.0.6 with PID 648 (C:\Users\lucas_candido.SEDETUR\Downloads\springboot2-essentials\target\classes started by lucas_candido in C:\Users\lucas_candido.SEDETUR\Downloads\springboot2-essentials)
2023-07-24T17:10:19.237-03:00  INFO 648 --- [  restartedMain] a.d.s.Springboot2EssentialsApplication   : No active profile set, falling back to 1 default profile: "default"
2023-07-24T17:10:19.302-03:00  INFO 648 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2023-07-24T17:10:19.303-03:00  INFO 648 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2023-07-24T17:10:20.666-03:00  INFO 648 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-07-24T17:10:20.677-03:00  INFO 648 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-07-24T17:10:20.677-03:00  INFO 648 --- [  restartedMain] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.10]
2023-07-24T17:10:20.774-03:00  INFO 648 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-07-24T17:10:20.774-03:00  INFO 648 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1471 ms
2023-07-24T17:10:20.847-03:00  WARN 648 --- [  restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serieController' defined in file [C:\Users\lucas_candido.SEDETUR\Downloads\springboot2-essentials\target\classes\academy\devdojo\springboot2\controller\SerieController.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'serieService': Unsatisfied dependency expressed through field 'serieRepository': No qualifying bean of type 'academy.devdojo.springboot2.repository.SerieRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2023-07-24T17:10:20.850-03:00  INFO 648 --- [  restartedMain] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2023-07-24T17:10:20.872-03:00  INFO 648 --- [  restartedMain] .s.b.a.l.ConditionEvaluationReportLogger : 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-07-24T17:10:20.929-03:00 ERROR 648 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field serieRepository in academy.devdojo.springboot2.service.SerieService required a bean of type 'academy.devdojo.springboot2.repository.SerieRepository' that could not be found.


Action:

Consider defining a bean of type 'academy.devdojo.springboot2.repository.SerieRepository' in your configuration.


Process finished with exit code 0

Também testei subir a aplicação com o @Autowired e com o construtor, mas deu o mesmo erro.

Nossa, que mensagem curtinha.

Tem alguma coisa faltando, ele não tá encontrando o bean certo.

Teria como vc colocar este projeto no GitHub e compartilhar aqui para eu testar?

1 curtida

Cara, desculpa a demora. Fiquei tentando resolver isso de todas as formas, estudei sobre os possíveis erros e nada funcionou. Até pra subir no github tive problema (GitHub - LucasCandidoMcz098/springboot2). Testei clonar o projeto do zero e tive o mesmo problema.

Clonei e testei.

O problema é que vc adicionou aquele exclude na sua @SpringBootApplication.

Troque isto:

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })

Por isto:

@SpringBootApplication

Quando vc exclui a auto-configuração do DataSource várias outras auto-configurações que dependem dela são desativadas. No caso a JpaRepositoriesAutoConfiguration, responsável por configurar seus repositories, depende da HibernateJpaAutoConfiguration que depende da DataSourceAutoConfiguration.

Desabilitar uma auto-configuração significa que vc não precisa dela, o que não é o seu caso, ou que vc vai assumir a responsabilidade de configurar aquela funcionalidade manualmente, o que eu não recomendo a menos que vc tenha um bom motivo.

Depois de remover aquele exclude, vá para sua classe SerieService e adicione isso:

@Service
public class SerieService {
  private final SerieRepository serieRepository;

  public SerieService(SerieRepository serieRepository) {
    this.serieRepository = serieRepository;
  }

  // ...

E agora tudo deve funcionar.

Aproveitando… Vi que vc anotou o construtor da SerieController com @Autowired, mas isto não é necessário. Vc só vai precisar fazer isso se a sua classe tiver mais de um constructor.

Vi também que vc anotou a DateUtil com @Repository. Apesar de isso torná-la em um bean e possibilitar que seja injetada em outros beans, esta anotação não é adequada para o que esta classe faz. Uma anotação mais adequada seria @Component.

2 curtidas

Cara, você salvou.

Só achei estranho que antes de anotar a psvm com o @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) a aplicação não subia.

Após fazer todas as alterações que você passou tudo voltou ao normal. Muito obrigado mais uma vez! S2

1 curtida