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>.

Spring: uma introdução prática

  • 1.
    Spring: uma introdução prática JoséBarros caianajsb@gmail.com
  • 2.
    Roteiro ▪ Introdução – Oque é 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.
  • 6.
    Inversão de Controlecom 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 dearquivo xml ▪ <bean id="mensagem" class="br.edu.ifpb.minicurso.spring.Mensagem"></bean>
  • 8.
  • 9.
    Configuração através deAnotaçõ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
  • 10.
  • 11.
    Configuração através AnotaçõesJava 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
  • 12.
  • 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.
  • 15.
  • 16.
    Agendamento de tarefas ▪Configuração no application context – <task:annotation-driven /> ▪ Configuração no bean – @Component (ou @Named) – @Scheduled
  • 17.
  • 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>.