Iniciando o projeto
- No eclipse clique em
File > New > Project
- Selecione
Maven Project
e clique em Next - Selecione
Create a simple project (skipe archetype selection)
e clique em Next - Complete os campos com os dados necessários e clique em Finish
Instalando o Spring boot
- Vá em https://projects.spring.io/spring-boot/#quick-start
- Copie o conteúdo de
dependecies
- Cole no
pom.xml
do projeto, antes do fechamento da tag</project>
e salve o arquivo.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.7.RELEASE</version>
</dependency>
</dependencies>
Criando a classe de configuração
- Crie uma classe com o nome Configuração, na pasta
src/main/java
@SpringBootConfiguration
public class Configuracao {
public static void main(String[] args) throws Exception {
SpringApplication.run(Configuracao.class, args);
}
}
Criando o controller
- Crie uma classe com o nome indexController, na pasta
src/main/java
@Controller
public class indexController {
@RequestMapping("/")
public String index() {
return "index";
}
}
Configurando o Engine Thymeleaf
- Crie uma pasta chamada templates dentro da pasta
src/main/resources
- Crie um arquivo HTML com o nome index na pasta
src/main/resources
- Busca aqui a versão apropriada para o seu projeto https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf
- No
pom.xml
coloque a dependência
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
- Para acrescentar arquivos CSS ou Javascript
- Crie uma pasta chamada static dentro de
src/main/resource
- Cole todo o conteúdo dos seus arquivos, com por exemplo o bootstrap
Configuração do Hibernate
- No
pom.xml
acrescente essas duas dependências
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
- Abra a classe de configuracao
@SpringBootApplication
public class Configuracao {
public static void main(String[] args) throws Exception {
SpringApplication.run(Configuracao.class, args);
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/cartorios");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
}
Instalação e criação do projeto
- Primeiro baixe o Spring boot no site: https://spring.io/tools/sts/all
- Instale o arquivo e abra-o
- clique em file > new > Spring Starter Project
- Em name coloque o nome do seu projeto
- Em packing selecione o WAR
- Em group e package coloque o nome padrão dos packages, EX:
io.github.danprates
e clique em next. - No campo de busca coloque as dependências do seu projeto, EX
Web, Hibernate, e etc
- clique em next e depois em finish.
- Com isso basta rodar o projeto com o springboot. Clique em Run as > Sprint boot app.
Criando o primeiro Controller
- Crie uma classe no pacote controller.
package vc.com.cartorios.controllers;
import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import vc.com.cartorios.models.Cartorio;
import vc.com.cartorios.services.CartorioService;
// diz ao spring que essa classe é um controller do tipo REST
@RestController
public class CartoriosController {
@Autowired
CartorioService cartorioService;
// mapeia todas as rotas do padrao REST
@RequestMapping(
method = RequestMethod.POST
, value = "/cartorios"
, consumes = MediaType.APPLICATION_JSON_VALUE
, produces = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Cartorio> salvar(@RequestBody Cartorio cartorio) {
Cartorio cartorioSalvo = cartorioService.salvarBD(cartorio);
return new ResponseEntity<>(cartorioSalvo, HttpStatus.CREATED);
}
@RequestMapping(method = RequestMethod.GET, value = "/cartorios", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<Cartorio>> listar() {
Collection<Cartorio> cartoriosListados = cartorioService.listarBD();
return new ResponseEntity<>(cartoriosListados, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.GET, value = "/cartorios/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Cartorio> buscar(@PathVariable Integer id) {
Cartorio cartorio = cartorioService.buscarBD(id);
if(cartorio == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(cartorio, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.DELETE, value = "/cartorios/{id}")
public ResponseEntity<Cartorio> excluir(@PathVariable Integer id) {
Cartorio cartorio = cartorioService.buscarBD(id);
if(cartorio == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
cartorioService.excluirBD(cartorio);
return new ResponseEntity<>(HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.PUT, value = "/cartorios", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Cartorio> alterar(@RequestBody Cartorio cartorio) {
cartorioService.salvarBD(cartorio);
return new ResponseEntity<>(HttpStatus.OK);
}
}
Criando o Model
- Crie uma classe no pacote models.
package vc.com.cartorios.models;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
// diz ao spring que essa clase manipula o banco de dados
@Entity
public class Cartorio {
@Id // diz ao spring que esse atributo é o identificador da tabela
@GeneratedValue // e que é gerado automaticamente
private Integer id;
private String nome;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Criando o Repository do model
- Crie uma classe no pacote repositories
implementa os métodos da JPA, automatizando as tarefas de CRUD no banco
package vc.com.cartorios.repositories;
import org.springframework.data.jpa.repository.JpaRepository;
import vc.com.cartorios.models.Cartorio;
public interface CartorioRepository extends JpaRepository<Cartorio, Integer> {
}
Criando a service(DAO) do Repository
- Crie uma classe no pacote services
essa classe faz o DAO do projeto, usando a implementação do JPA
package vc.com.cartorios.services;
import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import vc.com.cartorios.models.Cartorio;
import vc.com.cartorios.repositories.CartorioRepository;
@Service
public class CartorioService {
@Autowired
CartorioRepository cartorioRepository;
public Cartorio salvarBD(Cartorio cartorio) {
return cartorioRepository.save(cartorio);
}
public Collection<Cartorio> listarBD() {
return cartorioRepository.findAll();
}
public Cartorio buscarBD(Integer id) {
return cartorioRepository.findOne(id);
}
public void excluirBD(Cartorio cartorio) {
cartorioRepository.delete(cartorio);
}
}
Configurando o Hibernate para acessar o banco
- Abra a classe
application.properties
emsrc/main/resources
spring.datasource.url=jdbc:mysql://localhost:3306/
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=create-drop
- Abra o
pom.xml
na pasta raiz. - e cole o código a seguir antes do fechamento da tag
</dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.15</version>
</dependency>
- Via terminal acesse o banco:
mysql -u root -p
- coloque a senha do MySQL
- crie o banco:
CREATE DATABASE cartorios;
- No eclipse rode novamente o projeto para que o Spring crie as tabelas do banco de dados.
Configurando os templetes WEB thymeleaf
- No
pom.xml
cole o código a seguir, antes do fechamento da tag</dependencies>
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
- crie uma página HTML na pasta
src/main/resources/templates
. - crie uma classe
HomeController
na pasta controllers.
package vc.com.cartorios.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/home")
public String home() {
return "index";
}
}
- acesse a URL:
http://localhost:8080/home