Manda aqui o código das suas classes controller e repository.
package med.voll.api.controller;
import med.voll.api.medico.DadosCadastroMedico;
import med.voll.api.medico.Medico;
import med.voll.api.repository.MedicoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/medicos")
public class MedicoController {
@Autowired
private MedicoRepository repository;
@PostMapping
public void cadastrarMedico(@RequestBody DadosCadastroMedico dados){
repository.save(new Medico(dados));
}
}
package med.voll.api.repository;
import med.voll.api.medico.Medico;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MedicoRepository extends JpaRepository<Medico, Long> {
}
Está certinho. Talvez seu projeto não esteja configurado para fazer o build automático e ainda não detectou a mudança no código.
Pare o projeto e realize o build com o atalho ALT + F9, ou clicando no ícone do martelo verde:
O erro persiste mesmo buildando.
Saiu mais coisa no log? Pode ser outro problema que está descrito no log. Veja se tem alguma exception.
Outra coisa, confere se sua classe main (ApiApplication) está no pacote med.voll.api
O main está no med.voll.api:
O log:
2023-04-24T12:56:51.578-03:00 INFO 9265 --- [ restartedMain] med.voll.api.ApiApplication : Starting ApiApplication using Java 17.0.6 with PID 9265 (/home/wander/Downloads/api/target/classes started by wander in /home/wander/Downloads/api)
2023-04-24T12:56:51.580-03:00 INFO 9265 --- [ restartedMain] med.voll.api.ApiApplication : No active profile set, falling back to 1 default profile: "default"
2023-04-24T12:56:51.612-03:00 INFO 9265 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2023-04-24T12:56:51.613-03:00 INFO 9265 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2023-04-24T12:56:52.157-03:00 INFO 9265 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-04-24T12:56:52.162-03:00 INFO 9265 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-04-24T12:56:52.163-03:00 INFO 9265 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.7]
2023-04-24T12:56:52.190-03:00 INFO 9265 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-04-24T12:56:52.190-03:00 INFO 9265 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 577 ms
2023-04-24T12:56:52.220-03:00 WARN 9265 --- [ 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 'repository': No qualifying bean of type 'med.voll.api.repository.MedicoRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2023-04-24T12:56:52.221-03:00 INFO 9265 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2023-04-24T12:56:52.234-03:00 INFO 9265 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-04-24T12:56:52.249-03:00 ERROR 9265 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Field repository in med.voll.api.controller.MedicoController required a bean of type 'med.voll.api.repository.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.repository.MedicoRepository' in your configuration.
Process finished with exit code 0
Estranho demais, pq está tudo certo :D
Consegue compartilhar seu projeto? subindo no github e me mandando o link do repositório ou zipando e subindo para o google drive e me passando aqui o link para acesso.
Sua classe Main:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class ApiApplication {
Remova esse parâmetro exclude, pois ele faz o spring ignorar os repositories do projeto:
@SpringBootApplication
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
O erro agora mudou.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader
Troca a dependência do MySQL no seu pom.xml para:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
Resolveu. Muito obrigado :))