Gradle
● Automação de build
● Tasks => passos que o Gradle executa para
executar o build
● build.gradle => adicionar subprojetos, modificar
parâmetros de linha de comando
Gradle
● settings.gradle => script com plugins e
dependências do projeto
● gradle.properties => arquivo com configurações
simples do projeto
Multi Project
Características
● Sistema subdividido em módulos
● Um ou mais módulos ligados a um build.gradle
Multi Project
Vantagens
● Facilita a manutenção e escalabilidade do código
● Facilita a divisão do trabalho em time
● Deixa o código mais bonito e elegante
Plugins
● Conjuntos de tasks
● Estendem os recursos do projeto
● Aplicam configurações específicas (por exemplo,
adicionando repositórios organizacionais ou impondo
padrões)
Plugins Vantagens
● Promove a reutilização e reduz a sobrecarga de manter
uma lógica semelhante em vários projetos
● Permite um maior grau de modularização, melhorando
a compreensibilidade e a organização
● Encapsula a lógica imperativa e permite que os scripts
de construção sejam o mais declarativos possível
Inversão de Controle
Inversão de Controle é uma forma diferente que temos para manipular o
controle sobre um objeto. É um padrão. Pode se dizer que é a mudança de
conhecimento que uma classe tem em relação à outra.
public class VendaDeProduto {
public void
vendeProduto(Produto produto) {
//Todo o código para a venda
do produto...
Log log = new
Log("Arquivo.txt");
log.grava(produto);
}
}
Injeção de dependência
Injeção de dependência é uma técnica utilizada para diminuir o
acoplamento entre classes.
Algumas formas de fazermos a Injeção de Dependência:
● Constructor Injection
● Getters & Setters
● Autowired
public class VendaDeProduto {
private Log log;
public void VendaDeProduto(Log logVenda) {
log = logVenda;
}
public void vendeProduto(Produto produto) {
//Todo o código para a venda do produto...
log.grava(produto);
}
}
Spring
● É um framework Java criado com o objetivo de facilitar o desenvolvimento
de aplicações
● Explora os conceitos de Inversão de Controle e Injeção de Dependências
● Fornece módulos de integração, segurança, testes e desenvolvimento
web, entre outros
Spring Boot
O Spring Boot é uma ferramenta que visa facilitar o processo de
configuração e publicação de aplicações que utilizem o ecossistema
Spring.
Spring Web MVC
Spring MVC é um framework JAVA, que implementa o design pattern
MVC.
● Model => Lógica da aplicação (serviços, repositórios e entidades).
● Control => Recebe as informações do usuário, envia para a Model e
retorna os dados requisitados para a View.
● View => Saída de representação de dados.
HATEOAS
● Navegação dinâmica entre endpoints através de links adicionados aos dados
● Essa combinação representa o estado do sistema
● Reforça o stateless => O servidor não precisa manter registro da sessão: o
próprio cliente sabe que as únicas transições possíveis são aquelas para as
quais existe um link disponível
Exemplo de Hateoas
● rel => Nesse caso o link faz referência à própria pessoa;
● href => URL completa que define um único recurso
Objeto Cliente
JSON simples
JSON Hateoas
LOMBOK
O Lombok é uma biblioteca Java focada em produtividade e redução de código
boilerplate que por meio de anotações adicionadas ao nosso código ensinamos o
compilador (maven ou gradle) durante o processo de compilação a criar código
Java.
@AllArgsConstructor => Construtor padrão com todos os argumentos
@NoArgsConstructor => Construtor vazio
@ToString => Cria uma toString
@EqualsAndHashCode => Cria hashcode e equals
LOMBOK
@Getter => Gera apenas getters
@Setter => Gera apenas setters
@RequiredArgsConstructor => Gera um construtor com um argumento por
campo final
@Data => Todos juntos agora: um atalho para @ToString,
@EqualsAndHashCode, @Getter em todos os campos e @Setter em todos os
campos não-finais, e @RequiredArgsConstructor
@Builder => Cria objetos com facilidade
@Synchronized => sincroniza as threads

Gradle spring-hateoas-Lombok

  • 2.
    Gradle ● Automação debuild ● Tasks => passos que o Gradle executa para executar o build ● build.gradle => adicionar subprojetos, modificar parâmetros de linha de comando
  • 3.
    Gradle ● settings.gradle =>script com plugins e dependências do projeto ● gradle.properties => arquivo com configurações simples do projeto
  • 4.
    Multi Project Características ● Sistemasubdividido em módulos ● Um ou mais módulos ligados a um build.gradle
  • 5.
    Multi Project Vantagens ● Facilitaa manutenção e escalabilidade do código ● Facilita a divisão do trabalho em time ● Deixa o código mais bonito e elegante
  • 6.
    Plugins ● Conjuntos detasks ● Estendem os recursos do projeto ● Aplicam configurações específicas (por exemplo, adicionando repositórios organizacionais ou impondo padrões)
  • 7.
    Plugins Vantagens ● Promovea reutilização e reduz a sobrecarga de manter uma lógica semelhante em vários projetos ● Permite um maior grau de modularização, melhorando a compreensibilidade e a organização ● Encapsula a lógica imperativa e permite que os scripts de construção sejam o mais declarativos possível
  • 8.
    Inversão de Controle Inversãode Controle é uma forma diferente que temos para manipular o controle sobre um objeto. É um padrão. Pode se dizer que é a mudança de conhecimento que uma classe tem em relação à outra.
  • 9.
    public class VendaDeProduto{ public void vendeProduto(Produto produto) { //Todo o código para a venda do produto... Log log = new Log("Arquivo.txt"); log.grava(produto); } }
  • 10.
    Injeção de dependência Injeçãode dependência é uma técnica utilizada para diminuir o acoplamento entre classes. Algumas formas de fazermos a Injeção de Dependência: ● Constructor Injection ● Getters & Setters ● Autowired
  • 11.
    public class VendaDeProduto{ private Log log; public void VendaDeProduto(Log logVenda) { log = logVenda; } public void vendeProduto(Produto produto) { //Todo o código para a venda do produto... log.grava(produto); } }
  • 13.
    Spring ● É umframework Java criado com o objetivo de facilitar o desenvolvimento de aplicações ● Explora os conceitos de Inversão de Controle e Injeção de Dependências ● Fornece módulos de integração, segurança, testes e desenvolvimento web, entre outros
  • 14.
    Spring Boot O SpringBoot é uma ferramenta que visa facilitar o processo de configuração e publicação de aplicações que utilizem o ecossistema Spring.
  • 15.
    Spring Web MVC SpringMVC é um framework JAVA, que implementa o design pattern MVC. ● Model => Lógica da aplicação (serviços, repositórios e entidades). ● Control => Recebe as informações do usuário, envia para a Model e retorna os dados requisitados para a View. ● View => Saída de representação de dados.
  • 16.
    HATEOAS ● Navegação dinâmicaentre endpoints através de links adicionados aos dados ● Essa combinação representa o estado do sistema ● Reforça o stateless => O servidor não precisa manter registro da sessão: o próprio cliente sabe que as únicas transições possíveis são aquelas para as quais existe um link disponível
  • 17.
    Exemplo de Hateoas ●rel => Nesse caso o link faz referência à própria pessoa; ● href => URL completa que define um único recurso Objeto Cliente JSON simples JSON Hateoas
  • 18.
    LOMBOK O Lombok éuma biblioteca Java focada em produtividade e redução de código boilerplate que por meio de anotações adicionadas ao nosso código ensinamos o compilador (maven ou gradle) durante o processo de compilação a criar código Java. @AllArgsConstructor => Construtor padrão com todos os argumentos @NoArgsConstructor => Construtor vazio @ToString => Cria uma toString @EqualsAndHashCode => Cria hashcode e equals
  • 19.
    LOMBOK @Getter => Geraapenas getters @Setter => Gera apenas setters @RequiredArgsConstructor => Gera um construtor com um argumento por campo final @Data => Todos juntos agora: um atalho para @ToString, @EqualsAndHashCode, @Getter em todos os campos e @Setter em todos os campos não-finais, e @RequiredArgsConstructor @Builder => Cria objetos com facilidade @Synchronized => sincroniza as threads