fiz uma Api do Spring boot em Java mas quando rodo a aplicação, é iniciado na porta 8090,mas quando envio no postman ou no Insomnia aparece o erro “Could not send request” e “Couldn’t connect to server”
Respectivamente
LINK DO MEU GITHUB:GitHub - Gustavopomp/TestesUnitarios
Você não configurou nenhuma porta custom no application.properties
, a porta padrão é 8080.
Sua classe principal, a que contem o método main, deve ficar no pacote raiz, todas as outras classes precisam estar hierarquicamente abaixo dela para que a anotação @ComponentScan
contida no @SpringBootApplication
funcione e consiga gerenciar todos os beans configurados, ou, você pode configurar manualmente um @ComponentScan
fornecendo todos os pacotes que precisam ser varridos pelo framework para gestão dos beans.
1 curtida
Olá…tudo bem eu arrumei esse problema mas agora esta dando um erro:
“required a bean of type ‘gusystem.api.service.service.UserService’ that could not be found”
LINK DO MEU GITHUB: GitHub - Gustavopomp/TestesUnitarios
O erro diz que não encontrou um bean do tipo UserService
, justamente porquê você não explicitou que sua implementação é um bean válido para o spring!
Anote a sua classe UserServiceImpl
com @Service
.
Prometo que essa é a ultima kkk
Com o config eu salvo dois usuários no repositorio,com o debug o service busca os atributos mas na hora do return volta nulo não sei o porque.
Precisaria entender como você está salvando os usuários e a forma de como está tentando buscá-los para ter uma ideia do que pode estar ocorrendo…
Eu uso o config para salvar os usuários no repositório desse jeito:
@Bean
public void StartDB() {
User u1 = new User(null, “gustavo”, “gustavoferrazpompeogmail.com”, “123”);
User u2 = new User(null, “luiz”, “luizgmail.com”, “321”);
repository.saveAll(List.of(u1,u2));
}
O config é ativado e salvo no repositorio,com o service eu criei um metodo FindById e salvei desse jeito:
Override
public User FindById(Integer id) {
Optional obj = repository.findById(id);
return obj.get();
}
com o Debug,eu percebi que o obj recebe as informações de acordo com o config,mas na hora do retorno volta nulo:
GetMapping(value = “/{id}”)
public ResponseEntity findById(PathVariable Integer id) {
return ResponseEntity.ok().body(service.FindById(id));
}
Testei seu código aqui e aparentemente está funcionando normalmente, acredito que talvez você esteja fazendo a requisição de forma incorreta, por isso está recebendo nulo como resposta!
Log da aplicação inicializando e fazendo os 2 inserts no H2.
Hibernate:
insert
into
user
(id, email, name, password)
values
(null, ?, ?, ?)
Hibernate:
insert
into
user
(id, email, name, password)
values
(null, ?, ?, ?)
2023-11-09 12:01:45.615 WARN 30677 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2023-11-09 12:01:45.760 INFO 30677 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8090 (http) with context path ''
2023-11-09 12:01:45.765 INFO 30677 --- [ main] gusystem.api.GuApiApplication : Started GuApiApplication in 1.834 seconds (JVM running for 2.132)
2023-11-09 12:03:45.338 INFO 30677 --- [nio-8090-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-11-09 12:03:45.338 INFO 30677 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-11-09 12:03:45.340 INFO 30677 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms
Request sendo feita para recuperar os 2 registros cadastrados anteriormente:
$ curl -v -X GET "http://localhost:8090/user/1"
* Trying 127.0.0.1:8090...
* Connected to localhost (127.0.0.1) port 8090 (#0)
> GET /user/1 HTTP/1.1
> Host: localhost:8090
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: application/json
< Transfer-Encoding: chunked
< Date: Thu, 09 Nov 2023 15:03:45 GMT
<
* Connection #0 to host localhost left intact
{"id":1,"name":"gustavo","email":"gustavoferrazpompeo@gmail.com","password":"123"}%
$ curl -v -X GET "http://localhost:8090/user/2"
* Trying 127.0.0.1:8090...
* Connected to localhost (127.0.0.1) port 8090 (#0)
> GET /user/2 HTTP/1.1
> Host: localhost:8090
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: application/json
< Transfer-Encoding: chunked
< Date: Thu, 09 Nov 2023 15:03:51 GMT
<
* Connection #0 to host localhost left intact
{"id":2,"name":"luiz","email":"luiz@gmail.com","password":"321"}%
Em ambas requests buscando pelos Ids 1 e 2 obtive a resposta normalmente!