Postagens

Spring Email

  O Spring possui uma integração com o Java Mail que auxilia na criação de rotinas de envio de email. Dependências <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-mail </artifactId> </dependency> Configurações  Antes de criar a rotina, é preciso especificar os dados de envio de e-mail, como o servidor, o usuário/senha, etc. Nesse exemplo, iremos usar o Gmail para fazer o envio de e-mail: spring.mail.host = smtp.gmail.com spring.mail.port = 587 spring.mail.username =************ @gmail.com spring.mail.password = **************** spring.mail.properties.mail.smtp.auth = true spring.mail.properties.mail.smtp.starttls.enable = true Observação : para enviar e-mails usando o Gmail é necessário configurar uma senha de aplicativo. Veja esse artigo que mostra como fazer. JavaMailSender e SimpleMailMessage  Agora podemos criar a rotina de envio de e-mail. Primeiro, solicitamos ao Spring que injete o JavaMailSen

Spring Security

   O Spring Security é um framework do ecossistema Spring que ajuda na autenticação e autorização de usuários.  Importação da dependência <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-security </artifactId> </dependency> Por que usar um framework de segurança na sua aplicação web?  Utilizar um framework de segurança é fundamental para qualquer aplicação web hoje em dia, tanto para aplicações expostas na internet para qualquer usuário, quanto para aplicações corporativas fechadas.  As principais vulnerabilidades em sistemas web hoje em dia são: Controle de acesso quebrado Falhas de criptografia Cross Site Request Forgery (CSRF) Vulnerabilidades conhecidas em pacotes/dependências do projeto Para saber quais são as 10 maiores falhas, você pode acessar o  OWASP Top Ten . Autenticação x Autorização  Uma dúvida comum é não saber a diferença entre autenticação e autorização. É muito simples: autenticação:

Thymeleaf

Imagem
 O Thymeleaf é uma template engine  que permite ao Spring servir páginas HTML, com CSS e Javascript, de forma simples e organizada. Integração com o Spring  Para usar o Thymeleaf em uma aplicação Spring, basta importar o pacote spring-boot-starter-thymeleaf . Organização  Os arquivos HTML devem ficar dentro da pasta resources/templates , enquanto os arquivos estáticos (CSS, Javascript, imagens, etc.), devem ficar na pasta resources/static , separando cada tipo em uma pasta (ex: resources/static/css ). Servindo um arquivo HTML  Para o Spring retornar um arquivo HTML como resposta à uma requisição, basta que ele retorne uma string com o nome do arquivo HTML:  O código acima irá buscar um arquivo chamado create.html  na pasta resources/templates . redirect  Quando precisamos fazer um redirecionamento (ex: dados foram salvos e o usuário deve ser redirecionado para a tela de listagem), basta retornar "redirect:/url-destino" . ModelAndView  Porém, quando precisamos criar páginas HT

Spring Validation

  O Spring Validation é o módulo do Spring que facilita na validação de dados recebidos, como: @NotBlank : garante que o campo não está vazio @Size(max=x) : define que o tamanho máximo do campo é "x"  Essas anotações devem ser feitas nos campos dentro da classe DTO  ( Data Transfer Object ). Além disso, no método em que o DTO está sendo recebido, a anotação @Valid deve estar presente junto ao DTO.

Spring Data JPA

 O Spring Data JPA  é o framework que facilita a integração da aplicação com o banco de dados, mapeando as tabelas em classes e fornecendo diversas funções de operações básicas no banco (consultas, inserções, deleções, etc.). Propriedades  O primeiro passo para conectar uma aplicação à um banco de dados é inserindo os dados de conexão no application.properties .  Principais dados: spring.datasource.url : url de conexão (exemplo: jdbc:mysql://localhost:3306/nome_do_banco) spring.datasource.username : usuário de conexão spring.datasource.password : senha do usuário spring.jpa.hibernate.ddl-auto : como a aplicação irá se portar em relação às divergências com o banco (campo faltante, tabela com campo a menos, etc.) none : não irá verificar nem fazer nada validate : irá somente verificar se a aplicação está de acordo com o banco de dados update : irá atualizar o banco de dados de acordo com a aplicação create-drop : irá criar a base de dados sempre que a aplicação for inicializada e deletá-

Spring Boot

Imagem
 O Spring Boot veio para facilitar na criação de aplicações web usando o Spring Framework, porém substituindo diversos arquivos de configurações presentes no Spring Framework por convenções.   As configurações necessárias (bem reduzidas), devem ser inseridas em um arquivo application.properties .  Outra diferença é que ele já trás um Servlet Container   integrado, como o Tomcat ou o Jetty. Spring Initializer  Podemos criar rapidamente uma aplicação Spring Boot usando o Spring Initializer : Campos: Group : identifica a empresa ou o grupo responsável (geralmente: com.nome-da-empresa ) Artifact : identificador do projeto (letras são separadas com traços: nome-da-aplicação ) Name: nome do projeto (pode ser escrito normalmente: Nome Da Aplicação) Description : descrição do projeto Package name : junção do group  e do artifact  ( com.nome-da-empresa.nome-da-aplicação ) Packaging : como o projeto será encapsulado Java : versão do Java Dependencies : dependências do projeto (serão inseridas no

IoC com Spring

Imagem
 A Inversão de Controle (em inglês Inversion of Control - IoC) é uma ferramenta poderosa que facilita na criação de objetos complexos (que dependem de outros objetos), já que o papel de criar as dependências é delegada ao framework. Injeção de Dependência  O Spring lida com a Inversão de Controle usando a Injeção de Dependência .  Os objetos que solicitam a injeção são chamados de Beans , e devem possuir alguma anotação que os identifiquem como tal, como: @Component : classe genérica @Service : classe de serviço @Controller : classe controladora (recebe as requisições, delega as ações para a classe de serviço e retornam a response) @Repository : classe que representa um repositório (tabela do banco de dados)  Tendo alguma dessas anotações, o Spring irá injetar as dependências automaticamente nos construtores da classe.  Também é possível solicitar a injeção diretamente em um atributo usando a anotação @Autowired , apesar de ser recomendado utilizar os construtores. Exemplo: