Este tutorial irá mostrar como facilmente criar um Hello World com Spring Boot, explicando alguns conceitos sobre essa produtiva ferramenta.
O ecossistema do Spring vem se tornando muito amplo durante estes anos, possibilitando a utilização de injeção de dependências, criação de APIs RESTful, processamento em batch com acesso a banco de dados e mais, muito mais. Porém, a configuração inicial e as vezes, até a manutenção de tais projetos pode se tornar um pouco bagunçada devido a quantidade de frameworks co-existindo um com o outro.
Além do mais, aplicações monolitas, na maior parte das vezes, atingem escalabilidade apenas como um todo ao invés de escalar apenas os recursos mais utilizados de forma a aprimorar a utilização de recursos computacionais.
O Spring Boot vem para resolver todos esses problemas, provendo aplicações standalone a nível de produção e convenção ao invés de configuração, facilitando o caminho para que você possa começar a escrever o código que realmente importa: sua lógica de negócio.
Agora que você já sabe o quão importante o Spring Boot é, vamos ao tutorial!
Na sua IDE (Eclipse com o plugin do STS ou o STS standalone), clique em File > New > Spring Starter Project. Na próxima tela, você pode deixar os as configurações com seus valores padrões e clicar em Next. Porém, eu editei alguns dos campos para dar uma identidade ao meu projeto:
Agora, para termos acesso a funcionalidades de banco de dados e ao container RESTful Tomcat, selecione as dependências JPA, Web e Rest Repositories. Use o campo de busca para te ajudar a encontrar as dependências.
Por último, clique em Finish e espere o Maven baixar as dependências e construir o projeto.
Iremos utilizar o banco de dados em memória H2 para fins de simplicidade, porém, este pode ser facilmente substituído por qualquer banco de dados relacional, como MySQL, Postgres, etc.
Crie uma entidade JPA chamada Person
no pacote com.bgasparotto.springboot.helloworld.model
:
package com.bgasparotto.springboot.helloworld.model; import javax.persistence.*; @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String firstName; private String lastName; // Getters and setters }
Crie uma interface para um repositório JPA chamado PersonRepository
no pacote com.bgasparotto.springboot.helloworld.persistence
:
package com.bgasparotto.springboot.helloworld.persistence; import org.springframework.data.jpa.repository.JpaRepository; import com.bgasparotto.springboot.helloworld.model.Person; @Repository public interface PersonRepository extends JpaRepository<Person, Long> { }
Adicione a dependência do banco de dados H2 no seu arquivo pom.xml
encontrado na pasta raíz do seu projeto:
<dependencies> ... <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> </dependencies>
Para inicializarmos o banco de dados com uma tabela e alguns dados, crie um arquivo chamado data.sql
em src/main/resources
:
INSERT INTO person (id, first_name, last_name) VALUES (999999, 'Admin', 'Admin'), (1, 'Bruno', 'Gasparotto'), (2, 'John', 'Lewis');
Para fins de demonstração e organização, iremos criar uma classe contendo lógica de negócio. Dito isto, tudo que faremos é filtrar uma lista de pessoas removendo o “Admin” antes de retornarmos o resultado.
Agora, crie uma interface chamada PersonService
no pacote com.bgasparotto.springboot.helloworld.service
:
package com.bgasparotto.springboot.helloworld.service; import java.util.List; import com.bgasparotto.springboot.helloworld.model.Person; public interface PersonService { List<Person> findAll(); }
Então, crie a classe PersonServiceImpl
contendo a implementação do serviço, dentro do mesmo pacote. Este serviço irá chamar nosso repositório, executar regras de negócio e retornar os dados para o cliente:
package com.bgasparotto.springboot.helloworld.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bgasparotto.springboot.helloworld.model.Person; import com.bgasparotto.springboot.helloworld.persistence.PersonRepository; @Service public class PersonServiceImpl implements PersonService { @Autowired private PersonRepository repository; @Override public List<Person> findAll() { List<Person> persons = repository.findAll(); persons.removeIf(p -> p.getId() == 999999); return persons; } }
Finalmente, iremos criar um controlador RESTful chamado PersonController
no pacote com.bgasparotto.springboot.helloworld.web
:
package com.bgasparotto.springboot.helloworld.web; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.bgasparotto.springboot.helloworld.model.Person; import com.bgasparotto.springboot.helloworld.service.PersonService; @RestController @RequestMapping("/persons") public class PersonController { @Autowired private PersonService service; @GetMapping public List<Person> findAll() { return service.findAll(); } }
Você deve ter notado o dashboard do Spring Boot na sua IDE, que lista e controla seus projetos do Spring Boot. Deste modo, selecione seu projeto nessa lista e clique no botão (Re)startÇ
Após isso, o log de inicialização será impresso. Aguarde até que os logs exibam que o Tomcat está disponível na porta 8080:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) 2017-12-04 22:01:41.863 INFO 8420 --- [ main] c.b.s.h.SpringbootHelloworldApplication : Starting SpringbootHelloworldApplication on INV007040 with PID 8420... 2017-12-04 22:01:41.865 INFO 8420 --- [ main] c.b.s.h.SpringbootHelloworldApplication : No active profile set, falling back to default profiles: default ... 2017-12-04 22:01:46.324 INFO 8420 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2017-12-04 22:01:46.330 INFO 8420 --- [ main] c.b.s.h.SpringbootHelloworldApplication : Started SpringbootHelloworldApplication in 4.675 seconds (JVM running for 5.296)
Por último, visite a página http://localhost:8080/persons e você irá ver o resultado JSON da sua API:
Adicionalmente, a versão completa do código fonte deste tutorial pode ser encontrada no repositório do GitHub.
Espero que ajude.
Até mais!
This guide will show you how to create a Python function decorator with a few…
This guide will show you how to fix the error Got permission denied while trying…
This guide will show you how to create a Python virtual environment on Intellij IDEA…
This tutorial will quickly show you how to to find and kill processes on Linux,…
This guide shows a possible solution for Python error Relocation R_X86_64_PC32 against symbol can not…
I condensed below a cheat sheet of Kubernetes useful commands. I will keep updating this…