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