Last Updated on 27/12/2023
Este tutorial irá mostrar como facilmente criar um Hello World com Spring Boot, explicando alguns conceitos sobre essa produtiva ferramenta.
Por que Spring Boot?
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!
Pré-requisitos
- Spring Tool Suite (STS) – clique aqui para o tutorial.
Criação do Spring Starter Project
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.
Banco de Dados
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.
Entidade JPA
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 }
Repositório JPA
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> { }
Dependência para o H2
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>
Inicialize seu banco de dados
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');
Lógica de Negócio
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.
Contrato do serviço
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(); }
Implementação do serviço
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; } }
REST
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(); } }
Rode a aplicação!
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!