Spring Framework. Parte 01 introdução e primeiros passos

Documentos relacionados
Criação de um novo projeto no Eclipse utilizando Maven

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

Figura 1: Eclipse criação de um Dynamic Web Project

Spring Framework. Parte 04 transações

TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL

Introdução ao Desenvolvimento de

Spring Framework. Parte 05 Spring Security

Sistema SGPA-IFSP. Manual de Instalação

Formação JAVA Web.

Demoiselle Tutorial Módulo 1 Arquitetura

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

PROJETO ECLIPSE: Estrutura do projeto: (Dynamic Web Project) LIBS: Java WebDeveloper. Prof. Edson Belém

JBoss Seam. Vinicius Senger Co-fundador Globalcode Alberto J Lemos (Dr. Spock) Instrutor Globalcode. Globalcode Open4Education

FACULDADE DE TECNOLOGIA SENAC GOIÁS PROGRAMAÇÃO PARA INTERNET TUTORIAL DE APLICAÇÃO JSF DESENVOLVIDO COM A FERRAMENTA ECLIPSE LUNA

Groupware Workbench Tutorial de instalação da Aplicação-Exemplo no Eclipse

Aplicações Web com Servlets e JSP

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

Manual Demoiselle Wizard CETEC/CTCTA

Desenvolvimento Web TCC Turma A-1

INTRODUÇÃO À TECNOLOGIA SERVLETS

Instalando o Eclipse e o Android

Integração Java x Flex

UMA ARQUITETURA VOLTADA PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB.

Prática da Disciplina de Sistemas Distribuídos Web Services Parte 1 IFMA DAI Professor Mauro Lopes C. Silva

Instalação Wiser Discovery Sistema Operacional Windows

Desenvolvimento para Web com Java

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Tutorial Módulo 06 - Segurança

Tutorial Hibernate + Vraptor para projetos Restful.

DISTRIBUINDO SUA APLICAÇÃO

Primefaces 3. Laboratório Passo-a-Passo. JSF - Primefaces. Prof. Leandro Rubim de Freitas Versão 1.

CONTEÚDO PROGRAMÁTICO

Sistemas Comerciais Java EE com CDI, JPA e PrimeFaces

Objetos e Componentes Distribuídos: EJB

Java para Web & EJB. Teoria, prática e questões Módulo Introdução e Servlets

Escrito por Neri Neitzke Qua, 21 de Dezembro de :34 - Última atualização Dom, 02 de Abril de :04

Configurando uma aplicação Struts

Programação II Programação para a Web. Christopher Burrows

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM

POO Programação Orientada a Objetos

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans.

Java para WEB com Struts 2 e Hibernate

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container TomCat Aula 05

CONTEÚDO PROGRAMÁTICO

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Índice. 1. Introdução Instalação: Eclipse e Android Primeira aplicação em Android... 11

Objetos e Componentes Distribuídos: EJB e CORBA

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Autores. Carlos Theophilo Latsch Cherem Maurício Costa

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

EMF-TUTORIAL. O modelo a ser utilizado está no arquivo Rose library.mdl e tem a seguinte estrutura de classes:

2ª Edição Décio Heinzelmann Luckow Alexandre Altair de Melo

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV1-01. Luiz Leão

POO Documentation. Release 1.0. Felipe Dau e Francisco Pereira Junior

Guia de Configuração Proxy IIS

Tutorial Jogo da Velha WEB

Guia de Configuração Proxy IIS

JAVA. Professor: Bruno Toledo

Sophos SafeGuard Enterprise 8.0.1

Para criar um projeto no ambiente eclipse utiliza-se o menu File, New e Project como ilustra a Figura 1.

Java para Desenvolvimento Web Carga Horária: 40 Horas.

JAVA PARA WEB E EJB APLICAÇÕES WEB, SERVIDORES DE APLICAÇÃO, CONTAINERS WEB

FACULDADE DE TECNOLOGIA SENAC GOIÁS CONTROLE DE ACESSO USANDO O FRAMEWORK RICHFACES. 5º PERÍODO Gestão da Tecnologia da Informação

Integrated Government Resources Planning IGRP Open Source. Como importar e contribuir - GitHub. Núcleo Operacional da Sociedade de Informação

Conexão com Banco de Dados

Lista de Exercícios Dissertativo

Módulo II Arquitetura em Camadas

Injeção de Dependências e Spring

Manual Dos Técnicos. Meu Primeiro Projecto Java IGRP JAVA OPEN SOURCE NOSI - NÚCLEO OPERACIONAL DA SOCIEDADE DE INFORMAÇÃO

Guia de Instalação Oracle Service Bus 12c com Eclipse OEPE

Acelerando o desenvolvimento Java com RAD 7.5

Transcrição:

Spring Framework Parte 01 introdução e primeiros passos

O que é Spring Framework? É um framework de apoio ao desenvolvimento de aplicações corporativas em Java que surgiu como uma alternativa à complexa plataforma J2EE, ganhando extrema popularidade. Provê uma série de funcionalidades, dentre as quais destacamse desenvolvimento de aplicações web e serviços REST, injeção de dependências, gerenciamento de transações, suporte a testes automatizados e suporte a programação orientada a aspectos. Suporta diversos produtos Java populares tais como JPA, Hibernate, JSF, entre outros. Software livre, desenvolvido pela Pivotal. Pode ser utilizado em contêineres web, dispensando servidores de aplicações JEE como Glassfish e JBoss. Também pode ser utilizado em aplicações desktop. 2

Módulos 3

Spring Framework 4 e Java Exige JDK 6+. Suporta Java 8. Suporta uma série de especificações JEE 7 tais como JPA 2.1, JMS 2.0, JTA 1.2 e Bean Validation 1.1. 4

Outros projetos Spring Spring MVC para desenvolvimento de aplicações web (módulo do Spring Framework). Spring Security para inserção de funcionalidades de autenticação e autorização. Spring Data para aplicações que usam novas tecnologias de armazenamento de dados como bancos NoSQL e serviços na nuvem. Spring Social para fácil integração com redes sociais. Spring Web Flow é uma extensão do Spring MVC para permitir a implementação de fluxos (wizards) de telas. Spring Roo para desenvolvimento RAD ao estilo Ruby on Rails. Além de outros. Visite http://spring.io/projects 5

Ferramentas adotadas no curso Eclipse Mars for JEE Developers Java 8 Tomcat 8 H2 database 6

Apache Maven Um projeto Spring típico possui muitas dependências, fazendo com que o gerenciamento manual seja inviável. É comum a utilização do Apache Maven para a criação e/ou gerenciamento do projeto. Maven é um automatizador de tarefas capaz de gerenciar as dependências de uma projeto Java. As configurações de um projeto são definidas em um arquivo POM (Project Object Model). Maven é embutido no Eclipse Mars. 7

Configurando o Tomcat Adicione o Tomcat ao Eclipse: Menu Window > Preferences > Server > Runtime Enviroments > Add Na janela New Server Runtime Enviroment Selecione a opção Apache Tomcat v8.0 Marque a opção Create a new local server e em seguida Next Na janela Tomcat Server indique o diretório de instalação do Tomcat 8 e em seguida Finish Repare que é criado um projeto Servers O servidor pode ser controlado pela guia Servers (Window > Show View > Other > Server > Servers) 8

Iniciando um projeto Maven no Eclipse Mars Menu File > New > Other Opção Maven > Maven Project Desmarque a opção Create simple project Selecione o archetype maven-archetype-webapp Archetype é um template de projeto. Preencha os campos Group Id, Artifact Id e Package. Group Id:identifica a organização/empresa. Artifact Id: nome do artefato principal a ser gerado (arquivo JAR ou WAR). Também é o nome do diretório raiz do projeto. Package: estrutura de pacotes Java a ser adotada. 9

Iniciando um projeto Maven no Eclipse Mars 10

Iniciando um projeto Maven no Eclipse Mars Vincular o projeto ao runtime do Tomcat (adiciona as bibliotecas de servlets e JSP ao projeto): Em Propriedades do projeto > Targeted Runtimes, marcar a opção Apache Tomcat 8.0 e em seguida Apply Criar os seguintes diretórios como source folders: src/main/java src/test/java 11

Iniciando um projeto Maven no Eclipse Mars Em propriedades do projeto > Project Facets: Alterar a versão Java para 1.8 Alterar a versão da Servlet API: Desmarcar a opção Dynamic Web Module e confirmar em Apply. Alterar a versão de Dynamic Web Module para 3.1 Marcar a opção Dynamic Web Module Clicar na opção Further Configuration Available. Na tela seguinte, marcar a opção Generate web.xml deployment descriptor. e informar src/main/webapp para o campo Content directory. Clicar em Apply. 12

Iniciando um projeto Maven no Eclipse Mars Abrir o arquivo src/main/webapp/web- INF/web.xml e verificar a versão da API de servlets. Se estiver diferente de 3.1, excluir o arquivo e em seguida usar a opção Botão direito no projeto > Java EE Tools > Generate Deployment Descriptor Stub para gerar um novo web.xml. 13

Iniciando um projeto Maven no Eclipse Mars Errado: Correto: 14

Configurando Spring 4 No arquivo pom.xml: Definir Spring IO Platform como gerenciador de dependências adicionando o código abaixo. <dependencymanagement> <dependencies> <dependency> <groupid>io.spring.platform</groupid> <artifactid>platform-bom</artifactid> <version>1.1.3.release</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement> 15

Configurando Spring 4 Atualizando as dependências. No pom.xml: Remova a dependência do JUnit. Adicione Spring MVC e Commons Logging como dependências. <dependencies> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> </dependency> <dependency> <groupid>commons-logging</groupid> <artifactid>commons-logging</artifactid> </dependency> </dependencies> 16

Configurando Spring 4 Criar o diretório src/main/webapp/web- INF/views Crie uma classe com as configurações do Spring MVC. No exemplo: AppWebConfig Crie uma subclasse de AbstractAnnotationConfigDispatcherServletInitia lizer para integrar Spring MVC com a aplicação web. No exemplo: SpringMVCServlet 17

Configurando Spring 4 package cursospring.revenda_veiculos.config; import org.springframework.context.annotation.bean; import org.springframework.web.servlet.config.annotation.enablewebmvc; import org.springframework.web.servlet.view.internalresourceviewresolver; @EnableWebMvc public class AppWebConfig { @Bean public InternalResourceViewResolver internalresourceviewresolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setprefix("/web-inf/views/"); resolver.setsuffix(".jsp"); return resolver; 18

Configurando Spring 4 package cursospring.revenda_veiculos.config; import org.springframework.web.servlet.support.abstractannotationconfigdispatcherser vletinitializer; public class SpringMVCServlet extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getrootconfigclasses() { return null; @Override protected Class<?>[] getservletconfigclasses() { return new Class[]{AppWebConfig.class; @Override protected String[] getservletmappings() { return new String[]{"/"; 19

Olá mundo! Passos: Criar a página olamundo.jsp em src/main/webapp/web-inf/views Criar o controlador web (classe OlaMundoController) Atualizar a classe AppWebConfig com a anotação @ComponentScan 20

Olá mundo! olamundo.jsp <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <!DOCTYPE html> <html> <head> <title>olá Mundo</title> </head> <body> <h1>${msg</h1> </body> </html> 21

Olá mundo! OlaMundoController.java package cursospring.revenda_veiculos.web; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; @Controller public class OlaMundoController { @RequestMapping("/olamundo") public String olamundo(model model){ model.addattribute("msg", "Olá Mundo!"); return "olamundo"; 22

Olá mundo! AppWebConfig.java... import org.springframework.context.annotation.componentscan; import cursospring.revenda_veiculos.web.olamundocontroller; @EnableWebMvc @ComponentScan(basePackageClasses={OlaMundoController.class) public class AppWebConfig {... 23

IoC e injeção de dependências Na inversão de controle (IoC) o gerenciamento do ciclo de vida dos objetos fica sob responsabilidade de uma infraestrutura de software tal como o contêiner JEE. Tipicamente, um objeto possui dependências. Na IoC, esse objeto não cria as dependências mas deve obtê-las de alguma forma. A injeção de dependências é um mecanismo que fornece essas dependências. 24

IoC e injeção de dependências Princípio de Hollywood: não nos ligue, nós te ligamos. class A{ private B b; public A(){ b = new B(); class A{ private B b; public A(B b){ this.b = b; 25

IoC e injeção de dependências O contexto do Spring é o ambiente que realiza a instanciação de objetos (chamados de beans Spring) e a injeção de dependências. Anotações são utilizadas para indicar as classes dos beans Springs: @Component: bean genérico. @Service: bean da camada de serviço. @Repository: bean da camada de persistência. @Controller: bean que atua como controlador web. A anotação @Autowired é utilizada para realizar a injeção de dependências. 26

IoC: exemplo Classe do objeto a ser injetado: package cursospring.revenda_veiculos.web; import org.springframework.stereotype.component; @Component public class Calculador { public int calcular(int valor) { return valor * 2; 27

IoC: exemplo package cursospring.revenda_veiculos.web; import org.springframework.beans.factory.annotation.autowired;... import org.springframework.web.bind.annotation.requestparam; @Controller public class CalculadorController { @Autowired private Calculador calculador; @RequestMapping("/calcular") public String olamundo(@requestparam(required=true) Integer valor, Model model){ model.addattribute("resposta", calculador.calcular(valor)); return "respostacalculador"; 28

IoC: exemplo respostacalculador.jsp <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <!DOCTYPE html> <html> <head> <title>resposta Calculador</title> </head> <body> <h1>resposta = ${resposta</h1> </body> </html> 29

IoC: exemplo 30

Entendendo as configurações Spring MVC adota o padrão front controller. DispatcherServlet é o objeto que captura as requisições HTTP e, com base nas URLs, executa os métodos definidos nos controladores web (classes marcadas com @Controller). Devido à herança de AbstractAnnotationConfigDispatcherServletInitia lizer, DispatcherServlet utilizará as configurações definidas em nossa classe SpringMVCServlet. 31

Entendendo as configurações Front controller no Spring MVC 2: HTTP request Handler mapping 3: Web controller 1: HTTP request 10: HTTP Response Dispatcher Servlet 4: HTTP request 5: model and view name Web controller 9: HTTP Response View 8: model 7: view 6: view name View resolver 32

Entendendo as configurações... public class SpringMVCServlet extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getrootconfigclasses() { return null; @Override protected Class<?>[] getservletconfigclasses() { return new Class[]{AppWebConfig.class; @Override protected String[] getservletmappings() { return new String[]{"/"; 33

Entendendo as configurações... public class SpringMVCServlet extends AbstractAnnotationConfigDispatcherServletInitializer O método getservletmappings { retorna os padrões de URL que @Override protected Class<?>[] getrootconfigclasses() serão tratados pelo { return null; DispatcherServlet. @Override protected Class<?>[] getservletconfigclasses() { return new Class[]{AppWebConfig.class; @Override protected String[] getservletmappings() { return new String[]{"/"; 34

Entendendo as configurações... public class SpringMVCServlet extends O método AbstractAnnotationConfigDispatcherServletInitializer getservletconfigclasses { retorna a relação de classes que @Override protected Class<?>[] getrootconfigclasses() contém configurações { do Spring return null; MVC. @Override protected Class<?>[] getservletconfigclasses() { return new Class[]{AppWebConfig.class; @Override protected String[] getservletmappings() { return new String[]{"/"; 35

Entendendo as configurações... @EnableWebMvc @ComponentScan(basePackageClasses={OlaMundoController.class) public class AppWebConfig { @Bean public InternalResourceViewResolver internalresourceviewresolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setprefix("/web-inf/views"); resolver.setsuffix(".jsp"); return resolver; 36

Entendendo as configurações... @EnableWebMvc @ComponentScan(basePackageClasses={OlaMundoController.class) public class AppWebConfig { @Bean public InternalResourceViewResolver internalresourceviewresolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); Esta classe contém as configurações para o resolver.setprefix("/web-inf/views"); Spring MVC. @EnableWebMvc habilita uma resolver.setsuffix(".jsp"); return resolver; série de funcionalidades tais como serialização JSON e geração de RSS. @ComponentScan indica os pacotes que contém classes anotadas como beans Spring. 37

Entendendo as configurações Além de JSP, Spring MVC suporta outras tecnologias de páginas dinâmicas tais como FreeMarker e GroovyMarkup. Um view resolver é um objeto capaz de renderizar páginas em uma determinada tecnologia. Este método define um view resolver apropriado para páginas JSP. As chamadas resolver.setprefix e resolver.setsuffix definem o que será respectivamente utilizado como prefixo e sufixo da string de visão retornada por um método... de um controlador web. A anotação @Bean indica que o objeto retornado @EnableWebMvc pelo método deve ser tratado gerenciado como um bean Spring. @ComponentScan(basePackageClasses={OlaMundoController.class) public class AppWebConfig { @Bean public InternalResourceViewResolver internalresourceviewresolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setprefix("/web-inf/views"); resolver.setsuffix(".jsp"); return resolver; 38

Referências Apache Foundation. Apache Maven Project. Disponível em <https://maven.apache.org/index.html>. Çaliskan, Mert e Sevindik, Kenan. Beginning Spring. Wrox, Indianapolis: 2015. JavaHash. Spring 4 MVC Hello World Tutorial Full Example. Disponível em <http://javahash.com/spring-4- mvc-hello-world-tutorial-full-example/> Johnson, Rod et al. Spring Framework Reference Documentation, 4.2.1 release. Disponível em <http://docs.spring.io/spring/docs/current/springframework-reference/html/> 39

Referências Kainulainen, Petri. Spring Data JPA Tutorial: Getting the Required Dependencies. Disponível em <http://www.petrikainulainen.net/programming/springframework/spring-data-jpa-tutorial-getting-the-requireddependencies/> Souza, Alberto. Spring MVC: domine o principal framework web Java. São Paulo: Casa do Código, 2015. Wikipédia. Inversão de controle. Disponível em <https://pt.wikipedia.org/wiki/invers%c3%a3o_de_controle> Wilkison, Andy. Spring IO Platform Reference Guide, 1.1.3 release. Disponível em <http://docs.spring.io/platform/docs/current/reference/htmlsi ngle/> 40

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Natal Central Diretoria Acadêmica de Gestão e Tecnologia da Informação Curso de formação em Spring Framework 4 Parte 1: introdução e primeiros passos. Autor: Alexandre Gomes de Lima Natal, outubro de 2015. 41