Camada que atua sob framework Spring, simplificando-o e modernizando-o, seguindo padrão MVC. Spring implementa padrão IoC (Inversion of Control), onde os objetos (Spring Beans / Beans) são instanciados automaticamente pelo container do Spring, dispensando criação manual. Instalar pré-requisitos (Ubuntu): sudo apt install -y default-jdk gradle maven
Recomenda-se separar camadas criando-as em diferentes pacotes, dentro do pacote principal.
Pacote Controller ficará em "projeto/src/main/java/pacotePrincipal/pacoteController"
Nome do pacotePrincipal: grupoExemplo.com.nomeProjeto
Nome do pacoteController: grupoExemplo.com.nomeProjeto.pacoteController
Acesse o site Spring Initializr, e preencha os campos:
Projeto para conhecimento de estrutura Spring Boot, e geração de controllers. Gerar projeto Spring Boot Gradle-Groovy, com dados:
package ubsocial.com.proj1.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World!";
}
}
package ubsocial.com.proj1.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CalendarController {
@GetMapping("/today")
public String today() {
return "Hoje é " + java.time.LocalDate.now();
}
@GetMapping("/tomorrow")
public String tomorrow() {
return "Amanhã é " + java.time.LocalDate.now().plusDays(1);
}
}
Projeto de operadora telefônica, com objetivo de criar aplicação com Models e incorporar, em código, relacionamentos entre classes Java, conforme acima. Relacionamentos unidirecionais (agregação, composição), somente o todo (losango) conhece sua parte (linha com seta), então será criado dado na classe do todo, cujo nome é o nome do relacionamento apontando para parte. Gerar projeto Spring Boot Gradle-Groovy, com dados:
package ubsocial.com.telefonia.model.entity;
public class Operadora {
private String nome;
}
package ubsocial.com.telefonia.model.entity.pessoal;
public class Cliente {
private String nome;
private String endereco;
}
package ubsocial.com.telefonia.model.entity.pessoal;
public class ClientePessoaFisica extends Cliente {
private String cpf;
}
package ubsocial.com.telefonia.model.entity.pessoal;
public class ClientePessoaJuridica extends Cliente {
private String cnpj;
}
package ubsocial.com.telefonia.model.entity.comercial;
import ubsocial.com.telefonia.model.entity.pessoal.Cliente;
import java.util.Set;
public class Celular {
private long numero;
private Cliente cliente;
private Set ligacoes;
private Plano plano;
}
package ubsocial.com.telefonia.model.entity.comercial;
public class CelularPosPago extends Celular {
private int diaVencimento;
}
package ubsocial.com.telefonia.model.entity.comercial;
import java.util.Date;
public class CelularPrePago extends Celular {
private double saldo;
private Date dataDeValidade;
}
package ubsocial.com.telefonia.model.entity.comercial;
import java.util.Date;
public class Ligacao {
private Date data;
private int duracao;
}
package ubsocial.com.telefonia.model.entity.comercial;
public class Plano {
private String nome;
private double valorPorMinuto;
}
Elaborado por Mateus Schwede
ubsocial.github.io