Spring

Description

mapa mental sobre spring
Douglas Rodrigues
Mind Map by Douglas Rodrigues, updated more than 1 year ago More Less
Douglas Rodrigues
Created by Douglas Rodrigues over 2 years ago
Douglas Rodrigues
Copied by Douglas Rodrigues over 2 years ago
2
0

Resource summary

Spring
  1. áres cobertas pelo ecossistema Spring
    1. Spring Data
      1. Acesso de banco de dados
      2. Spring security
        1. prover segurança
        2. cloud computing
          1. big data
          2. Surgio como alternativa ao java EE
            1. Spring não chega ser 100% concorrente do Java EE
              1. Porque, com Spring, você também usa tecnologias que estão dentro do Java EE
                1. Mas existem programadores que preferem trabalhar com os projetos do Spring, e outros que preferem trabalhar com as especificações do Java EE, sem Spring
            2. O Spring Framework
              1. o Spring Framework é apenas um, dentre o conjunto de projetos, que o Spring possui
                1. Ele é o projeto do Spring que serve de base para todos os outros, talvez por isso haja essa pequena confusão
                  1. regra de negócio e menos na infraestrutura
                    1. O Spring MVC
                      1. é um framework para criação de aplicações web e serviços RESTful
                        1. é o framework que te ajuda no desenvolvimento de aplicações web robustas, flexíveis e com uma clara separação de responsabilidades nos papéis do tratamento da requisição
                          1. é acrônimo de Model, View e Controller
                            1. o Controller tratando a requisição. Ele é o primeiro componente que nós vamos programar para receber os dados enviados pelo usuário
                              1. Mas é muito importante estar atento e não cometer erros adicionando regras de negócio, acessando banco de dados ou fazendo validações nessa camada, precisamos passar essa responsabilidade para o Model
                              2. model
                                1. No Model, pensando em algo prático, é o local certo para usarmos o JPA/Hibernate para salvar ou consultar algo no banco de dados, é onde iremos calcular o valor do frete para entrega de um produto, por exemplo
                                2. View
                                  1. A View irá “desenhar”, renderizar e transformar em HTML esses dados, para que o usuário consiga visualizar a informação, pois enquanto estávamos no Controller e no Model, estávamos programando em classes Java, e não em algo visual para o browser exibir ao usuário
                                3. 1. Acessamos uma URL no browser, que envia a requisição HTTP para o servidor que roda a aplicação web com Spring MVC. Esse servidor pode ser o Apache Tomcat, por exemplo. Perceba que quem recebe a requisição é o controlador do framework, o Spring MVC. 2. O controlador do framework irá procurar qual classe é responsável por tratar essa requisição, entregando a ela os dados enviados pelo browser. Essa classe faz o papel do controller. 3. O controller passa os dados para o model, que por sua vez executa todas as regras de negócio, como cálculos, validações e acesso ao banco de dados. 4. O resultado das operações realizadas pelo model é retornado ao controller. 5. O controller retorna o nome da view, junto com os dados que ela precisa para renderizar a página. 6. O framework encontra a view, que processa os dados, transformando o resultado em um HTML. 7. Finalmente, o HTML é retornado ao browser do usuário
                                4. Suporte para JDBC, JPA
                                  1. grave ou consulte algum banco de dados.
                                  2. Injeção de dependencias (Dependency injection – DI)
                                    1. é um tipo de inversão de controle (ou Inversion of Control – IoC) que dá nome ao processo de prover instâncias de classes que um objeto precisa para funcionar
                                      1. programar voltados para interfaces
                                        1. @Autowired
                                          1. A anotação @Autowired avisa ao Spring Framework para injetar uma instância de alguma implementação da interface RepositorioCliente na propriedade repositorio
                                5. funcionalidade
                                  1. Spring Data
                                    1. O Spring Data é um projeto que tem o objetivo de simplificar o acesso a tecnologias de armazenamento de dados, sejam elas relacionais (MySQL, PostgreSQL, etc) ou não (MongoDB, Redis, etc).
                                      1. O Spring Data já possui vários projetos dentro dele, como:
                                        1. • Spring Data Commons • Spring Data JPA • Spring Data Gemfire • Spring Data KeyValue • Spring Data LDAP • Spring Data MongoDB • Spring Data REST • Spring Data Redis • Spring Data for Apache Cassandra • Spring Data for Apache Solr
                                          1. Spring Data JPA
                                            1. O suporte do Spring Framework para JPA já é muito bom, mas o projeto Spring Data JPA vai bem além. Ele ajuda os desenvolvedores padronizando o uso de algumas funcionalidades, e isso faz com que tenhamos menos esforço para implementar as mesmas coisas
                                              1. Um exemplo disso seria a implementação padrão que ele já nos dá em repositórios, incluindo métodos como save, delete, findOne, entre outros.
                                    2. O Spring Security
                                      1. esse projeto trata da segurança em nível de aplicação. Ele tem um suporte excelente para autenticação e autorização
                                        1. Spring Security torna bem simples a parte de autenticação. Com algumas poucas configurações, já podemos ter uma autenticação via banco de dados, LDAP ou mesmo por memória. Sem falar nas várias integrações que ele suporta e na possibilidade de criar as suas próprias.
                                          1. Quanto a autorização, ele é bem flexível também. Através das permissões que atribuímos aos usuários autenticados, podemos proteger as requisições web (como as telas do nosso sistema, por exemplo), a simples invocação de um método e até a instância de um objeto.
                                            1. Sem contar que, por tabela, nós já protegemos as nossas aplicações de diversos ataques como o Session Fixation e o Cross Site Request Forgery
                                      2. O Spring Boot
                                        1. Enquanto os componentes do Spring eram simples, sua configuração era extremamente complexa e cheia de XMLs. Depois de um tempo, a partir da versão 3.0, a configuração pôde ser feita através de código Java.
                                          1. A configuração via código Java trouxe benefícios, como evitar erros de digitação, porque a classe de configuração precisa ser compilada. Mas nós precisamos escrever muito código explicitamente
                                            1. Com toda essa configuração excessiva, o desenvolvedor perde o foco na coisa mais importante: desenvolver as regras de negócio da aplicação. Talvez a maior revolução e o maior acerto dos projetos Spring, foi o Spring Boot. Com ele você alcança um novo paradigma para desenvolver aplicações Spring com pouco esforço. O Spring Boot trouxe agilidade, e te possibilita focar nas funcionalidades da sua aplicação com o mínimo de configuração.
                                              1. Vale destacar que, toda essa “mágica” que o Spring Boot traz para o desenvolvimento Spring, não é realizado com geração de código. Não, o Spring Boot não gera código! Ele simplesmente analisa o projeto e automaticamente o configura.
                                                1. É claro que é possível customizar as configurações, mas o Spring Boot segue o padrão que a maioria das aplicações precisa, então, muitas vezes não é preciso fazer nada. Se você já trabalha com o Maven, sabe que precisamos adicionar várias dependências no arquivo pom.xml, que pode ficar extenso, com centenas de linhas de configuração, mas com o Spring Boot podemos reduzir muito com os starters que ele fornece
                                                  1. Os starters são dependências que agrupam outras dependências, assim, se você precisa trabalhar com JPA e Hibernate, por exemplo, basta adicionar uma única entrada no pom.xml, que todas as dependências necessárias serão adicionadas ao classpath
                                        2. O Thymeleaf
                                          1. A view irá retornar apenas um HTML para o browser do cliente, mas isso deixa uma dúvida: Como ela recebe os objetos Java, enviados pelo controller, e os transforma em HTML? Nessa hora que entra em ação o Thymeleaf!
                                            1. Teremos um código HTML misturado com alguns atributos do Thymeleaf, que após processado, será gerado apenas o HTML para ser renderizado no browser do cliente. O Thymeleaf não é um projeto Spring, mas uma biblioteca que foi criada para facilitar a criação da camada de view, com uma forte integração com o Spring, e uma boa alternativa ao JSP
                                              1. O principal objetivo do Thymeleaf é prover uma forma elegante e bem formatada para criarmos nossas páginas. O dialeto do Thymeleaf é bem poderoso, como você verá no desenvolvimento da aplicação, mas você também pode estendê-lo para customizar, de acordo com suas necessidades.
                                                1. Para você ver como ele funciona, vamos analisar o código abaixo. <tr th:each="convidado : ${convidados}"> <td th:text="${convidado.nome}"></td> <td th:text="${convidado.quantidadeAcompanhantes}"></td> </tr> A expressão ${} interpreta variáveis locais ou disponibilizadas pelo controller. O atributo th:each itera sobre a lista convidados, atribuindo cada objeto na variável local convidado. Isso faz com que vários elementos tr sejam renderizados na página. Dentro de cada tr existem 2 elementos td. O texto que eles irão exibir vem do atributo th:text, junto com a expressão ${}, lendo as propriedades da variável local convidado.
                                          2. Maven
                                            1. O Maven é uma ferramenta muito importante no dia a dia do desenvolvedor Java, porque com ele nós conseguimos automatizar uma série de tarefas. Mas talvez o que mais fez o Maven ter sucesso, foi o gerenciamento de dependências. É muito bom poder escrever algumas linhas e já ter a biblioteca disponível para o nosso projeto.
                                            2. O Spring Tool Suite - STS
                                              1. O Spring Tool Suite, ou STS, é um Eclipse com vários plugins úteis para o trabalho com o Spring.

                                              Media attachments

                                              Show full summary Hide full summary

                                              Similar

                                              Programação
                                              Prepara Palhoça
                                              Curso AlgaWorks - Angular, Rest,SpringBoot
                                              Carlos Eduardo De Barros Souza
                                              Oracle Certified Java Associate 7
                                              Rafael Mulock
                                              O.Objetos Java
                                              Lorran Alves
                                              JPA/Hibernate
                                              Roberta Yaskarel
                                              Aula 05 - Biblioteca MapReduce
                                              Ronaldo Pimentel
                                              Java - Orientação a Objetos
                                              Leandro Serra
                                              Encapsulamento
                                              Marcos Fernandes2129
                                              Java Básico
                                              jr.desenvolvimento