Skip to content

Spring Boot Hello World

Last Updated on 27/12/2023

Spring Boot Hello World logo


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

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:

Spring Starter Project project details

Agora, para termos acesso a funcionalidades de banco de dados e ao container RESTful Tomcat, selecione as dependências JPAWeb e Rest Repositories. Use o campo de busca para te ajudar a encontrar as dependências.

Spring Starter Project dependencies

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Ç

Spring Boot Hello World Boot Dashboard view

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:

Spring Boot Hello World Boot browser result

Adicionalmente, a versão completa do código fonte deste tutorial pode ser encontrada no repositório do GitHub.

Espero que ajude.
Até mais!

Leave a Reply

Your email address will not be published. Required fields are marked *