SlideShare uma empresa Scribd logo
1 de 18
Spring: uma introdução
prática
José Barros
caianajsb@gmail.com
Roteiro
▪ Introdução
– O que é Spring?
▪ Inversão de Controle com Injeção de Dependência
– Configuração através de arquivo xml
– Configuração através de Anotações do Spring
– Configuração através de Anotações do Java EE (JSR 330 )
▪ Transações
▪ Agendamento de tarefas
O que é Spring?
▪ O Spring framework é uma tecnologia que surgiu para
resolver o problema da complexidade encontrada nos EJBs,
sendo um framework que implementa os padrões de
Inversão de Controle e Injeção de Dependência, além de
prover técnicas de boa programação fornecendo um modelo
unificado e simples de programação, isto o tornou um
sucesso em meio à comunidade de programadores,
sucesso este, foi tão grande que na versão mais nova do
JEE, diversas melhorias foram criadas baseadas no Spring.
[Calçado 2008; Pacheco 2007]
O que é Spring?
▪ O Spring Framework é composto por cerca de 20 módulos.
▪ Estes módulos são agrupados em Núcleo Container, Data Access /
Integração,Web, AOP (Aspect Oriented Programming),
instrumentação e teste, como mostrado no diagrama a seguir.
Inversão de Controle com Injeção de
Dependência
▪ É um padrão de projeto onde controle de instâncias e do ciclo de vida
dos objetos acontece de forma inversa ao modelo tradicional.
▪ No modelo tradicional, o controle da criação de instâncias e do ciclo
de vida dos objetos fica restrito à aplicação desenvolvida.
▪ Já no modelo de Inversão de Controle / Injeção de Dependência, você
delega esse controle para um framework responsável por instanciar
as dependências e injetá-las nos locais apropriados.
Configuração através de arquivo xml
▪ <bean id="mensagem"
class="br.edu.ifpb.minicurso.spring.Mensagem"></bean>
Exercício!
▪ Exercício!
Configuração através de Anotações do
Spring
▪ @Component é um estereótipo genérico para qualquer componente
gerido pelo Spring
– @Repository: Anota sua camada de persistência
– @Service: Anota sua camada de serviço
– @Controller: Anota sua camada de controle
▪ @Scope
– Define o escopo de um bean
▪ @Qualifier
– Indica (qualifica) qual tipo de bean será injetado
▪ @Autowired
– Marca um ponto onde será injetado uma dependência
Exercício!
▪ Exercício!
Configuração através Anotações Java EE
(JSR 330)
▪ @Named
▪ Marca qualquer classe que será gerenciada pelo framework.
▪ @Inject
▪ Marca um ponto onde será injetado uma dependência.
▪ @Qualifier
▪ Indica (qualifica) qual tipo de bean será injetado
Exercício!
▪ Exercício!
Transações (@Transactional): Propagação
▪ PROPAGATION_MANDATORY: Obriga o uso de uma transação, caso não
haja nenhuma transação corrente, é lançada uma exceção.
▪ PROPAGATION_NESTED: Executa dentro de uma transação aninhada se
uma transação corrente existir. Caso contrário cria uma nova.
▪ PROPAGATION_NEVER: Impede o uso de uma transação. Caso exista uma
transação corrente, é lançada uma exceção.
▪ PROPAGATION_NOT_SUPPORTED: Não usa a transação corrente. Este é
executado sempre sem nenhuma transação.
Transações (@Transactional): Propagação
▪ PROPAGATION_REQUIRED: Usa a transação corrente se existir, caso
não exista cria uma nova transação.
▪ PROPAGATION_REQUIRES_NEW: Cria uma nova transação, se já
existir uma corrente, suspende esta.
▪ PROPAGATION_SUPPORTS: Usa a transação corrente se existir,
caso contrário executa sem transação.
Exercício!
▪ Exercício!
Agendamento de tarefas
▪ Configuração no application context
– <task:annotation-driven />
▪ Configuração no bean
– @Component (ou @Named)
– @Scheduled
Exercício!
▪ Exercício!
Referências
▪ Pacheco, D. Spring Framework 2.0 para Desenvolvimento de
Aplicações em Java. http://pt.scribd.com/doc/18517573/Spring-
Framework-20-Diego-Pacheco.
▪ Calçado, P. Curso Spring Framework. <http://blog.flexdev.com.br/wp-
content/uploads/spring/apostila-spring.pdf>.

Mais conteúdo relacionado

Mais procurados

VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...Fernando Godóy
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFRafael Ponte
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e DependênciasWende Mendes
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisMichel Graciano
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!Bruno Borges
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 

Mais procurados (20)

Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Jee6
Jee6Jee6
Jee6
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Maven - Aula 06
Maven  - Aula 06Maven  - Aula 06
Maven - Aula 06
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSF
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reais
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Apache maven
Apache mavenApache maven
Apache maven
 
Prime Faces
Prime FacesPrime Faces
Prime Faces
 

Semelhante a Spring: uma introdução prática

Semelhante a Spring: uma introdução prática (20)

Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
 
Introdução - Java WEB
Introdução - Java WEBIntrodução - Java WEB
Introdução - Java WEB
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 
JSF & REST
JSF & RESTJSF & REST
JSF & REST
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Jheat
JheatJheat
Jheat
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
Manual
ManualManual
Manual
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Java web
Java webJava web
Java web
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 

Spring: uma introdução prática

  • 1. Spring: uma introdução prática José Barros caianajsb@gmail.com
  • 2. Roteiro ▪ Introdução – O que é Spring? ▪ Inversão de Controle com Injeção de Dependência – Configuração através de arquivo xml – Configuração através de Anotações do Spring – Configuração através de Anotações do Java EE (JSR 330 ) ▪ Transações ▪ Agendamento de tarefas
  • 3. O que é Spring? ▪ O Spring framework é uma tecnologia que surgiu para resolver o problema da complexidade encontrada nos EJBs, sendo um framework que implementa os padrões de Inversão de Controle e Injeção de Dependência, além de prover técnicas de boa programação fornecendo um modelo unificado e simples de programação, isto o tornou um sucesso em meio à comunidade de programadores, sucesso este, foi tão grande que na versão mais nova do JEE, diversas melhorias foram criadas baseadas no Spring. [Calçado 2008; Pacheco 2007]
  • 4. O que é Spring? ▪ O Spring Framework é composto por cerca de 20 módulos. ▪ Estes módulos são agrupados em Núcleo Container, Data Access / Integração,Web, AOP (Aspect Oriented Programming), instrumentação e teste, como mostrado no diagrama a seguir.
  • 5.
  • 6. Inversão de Controle com Injeção de Dependência ▪ É um padrão de projeto onde controle de instâncias e do ciclo de vida dos objetos acontece de forma inversa ao modelo tradicional. ▪ No modelo tradicional, o controle da criação de instâncias e do ciclo de vida dos objetos fica restrito à aplicação desenvolvida. ▪ Já no modelo de Inversão de Controle / Injeção de Dependência, você delega esse controle para um framework responsável por instanciar as dependências e injetá-las nos locais apropriados.
  • 7. Configuração através de arquivo xml ▪ <bean id="mensagem" class="br.edu.ifpb.minicurso.spring.Mensagem"></bean>
  • 9. Configuração através de Anotações do Spring ▪ @Component é um estereótipo genérico para qualquer componente gerido pelo Spring – @Repository: Anota sua camada de persistência – @Service: Anota sua camada de serviço – @Controller: Anota sua camada de controle ▪ @Scope – Define o escopo de um bean ▪ @Qualifier – Indica (qualifica) qual tipo de bean será injetado ▪ @Autowired – Marca um ponto onde será injetado uma dependência
  • 11. Configuração através Anotações Java EE (JSR 330) ▪ @Named ▪ Marca qualquer classe que será gerenciada pelo framework. ▪ @Inject ▪ Marca um ponto onde será injetado uma dependência. ▪ @Qualifier ▪ Indica (qualifica) qual tipo de bean será injetado
  • 13. Transações (@Transactional): Propagação ▪ PROPAGATION_MANDATORY: Obriga o uso de uma transação, caso não haja nenhuma transação corrente, é lançada uma exceção. ▪ PROPAGATION_NESTED: Executa dentro de uma transação aninhada se uma transação corrente existir. Caso contrário cria uma nova. ▪ PROPAGATION_NEVER: Impede o uso de uma transação. Caso exista uma transação corrente, é lançada uma exceção. ▪ PROPAGATION_NOT_SUPPORTED: Não usa a transação corrente. Este é executado sempre sem nenhuma transação.
  • 14. Transações (@Transactional): Propagação ▪ PROPAGATION_REQUIRED: Usa a transação corrente se existir, caso não exista cria uma nova transação. ▪ PROPAGATION_REQUIRES_NEW: Cria uma nova transação, se já existir uma corrente, suspende esta. ▪ PROPAGATION_SUPPORTS: Usa a transação corrente se existir, caso contrário executa sem transação.
  • 16. Agendamento de tarefas ▪ Configuração no application context – <task:annotation-driven /> ▪ Configuração no bean – @Component (ou @Named) – @Scheduled
  • 18. Referências ▪ Pacheco, D. Spring Framework 2.0 para Desenvolvimento de Aplicações em Java. http://pt.scribd.com/doc/18517573/Spring- Framework-20-Diego-Pacheco. ▪ Calçado, P. Curso Spring Framework. <http://blog.flexdev.com.br/wp- content/uploads/spring/apostila-spring.pdf>.