Boa noite, tarde ou dia...
Estou tento um erro na injeção do repository
2023-04-15T21:26:19.197-03:00 WARN 182122 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'medicoController': Unsatisfied dependency expressed through field 'medicoRepository': No qualifying bean of type 'med.voll.api.medico.MedicoRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2023-04-15T21:26:19.199-03:00 INFO 182122 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2023-04-15T21:26:19.215-03:00 INFO 182122 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-04-15T21:26:19.231-03:00 ERROR 182122 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
Description:
Field medicoRepository in med.voll.api.controller.MedicoController required a bean of type 'med.voll.api.medico.MedicoRepository' 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 'med.voll.api.medico.MedicoRepository' in your configuration.
Estava tento problemas com o application.properties, uma coisa que experimentei foi tentar usar o application.yml:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/vollmed_api
username: estudante_alura
password: *****
Meu repository esta assim:
package med.voll.api.medico;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MedicoRepository extends JpaRepository<Medico, Long> {
}
Meu controller:
[...]
@RestController
@RequestMapping(path = "/medicos")
public class MedicoController {
@Autowired
private MedicoRepository medicoRepository;
@PostMapping
@Transactional
public void cadastrar(@RequestBody DadosCadastroMedico dados) {
medicoRepository.save(new Medico(dados));
}
}
O meu ApiApplication esta assim:
package med.voll.api;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
O motivo para eu ter colocar do exclude = {DataSourceAutoConfiguration.class}) é por que estava dando o seguinte erro antes:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
A única solução que encontrei que funcionou foi definir esse exclude.
As dependencias no meu pom.xml esta assim:
<dependencies>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-mysql</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
</dependencies>
[...]