viii techtalk - spring 3

20
VIII Bemobi Tech Talk Spring 3 Diego Magalhães 11/01/2013

Upload: diego-magalhaes

Post on 29-Jun-2015

140 views

Category:

Technology


3 download

DESCRIPTION

Visão geral sobre Spring 3 para os desenvolvedores da BeMobi.

TRANSCRIPT

Page 1: VIII TechTalk - Spring 3

VIII Bemobi Tech TalkSpring 3Diego Magalhães 11/01/2013

Page 2: VIII TechTalk - Spring 3

Bemobi Tech Talk

Agenda

Data: 11/01/2013

• Spring Framework• Evolução• Bla bla Bla• Chicken

• Beans

• Configurações via XML e Anotações

• Aspectos

• Banco de Dados• Configurações

• Gerenciamento de Transações

• Bla Bla Bla• Chicken• Bla Bla Bla

Page 3: VIII TechTalk - Spring 3

Bemobi Tech Talk Data: 11/01/2013

Spring Framework

Page 4: VIII TechTalk - Spring 3

Bemobi Tech Talk Data: 11/01/2013

Visão geral – versão 3.2.x

Spring Framework

• Primeira versão milestone version em 2004• Módulos:

• Container IoC

• Aspectos

• Acesso a Dados

• Controle de Transações

• MVC

• Convention over Configuration

• Batch

• Integração entre sistemas

• Autenticação e Autorização

• JMX

• Messaging

• Testes

Page 5: VIII TechTalk - Spring 3

Bemobi Tech Talk Data: 11/01/2013

Evolução do framework

Adaptado de http://www.flickr.com/photos/mraible/4378559350/sizes/o/in/photostream/

Page 6: VIII TechTalk - Spring 3

Adoção (Top 20 frameworks na JVM)

Digite o nome do Projeto Data:

Pesquisa InfoQ de Out/2012 - http://www.infoq.com/research/jvm-web-frameworks

Page 7: VIII TechTalk - Spring 3

Bemobi Tech Talk

Spring Beans

Data: 11/01/2013

• Apesar do termo “bean” ou “java bean”, não há relação com as JSR 220/273/345 e são apenas definições de componentes

• POJOs

Page 8: VIII TechTalk - Spring 3

Spring Beans

Bemobi Tech Talk Data: 11/01/2013

Page 9: VIII TechTalk - Spring 3

• Criados por xml com <bean id=“goku”>• Via código com @Bean em um método que retorne uma instância de

“Heroi”• Escopos Singleton(default), prototype, request, session, global-session

(portlets)

Spring Beans

Bemobi Tech Talk Data: 11/01/2013

Page 10: VIII TechTalk - Spring 3

• Implementação da JSR 250 – Métodos para @PostContruct e @PreDestroy

Spring Beans – Ciclo de Vida

Todas as fases do ciclo de vida de um bean

Bemobi Tech Talk Data: 11/01/2013

Page 11: VIII TechTalk - Spring 3

Aspectos

• Ainda que DI nos deixe amarrar nossos componentes de maneira desacoplada, aspectos nos deixam capturar funcionalidades que são usadas por todos os componentes da aplicação

• Evita duplicação de código e elimina boa parte de bolierplate codding

Funcionalidades como logging, segurança e gerenciamento de transações são exemplospara aspectos

Bemobi Tech Talk Data: 11/01/2013

Page 12: VIII TechTalk - Spring 3

Container

• Dois tipos distintos: Bean Factory e Application Contexts• Usa-se Application Context, uma vez que são mais completos e contém

abstrações para mensagens de texto, publicação de eventos etc.

Container Spring, responsável por criar, relacionar e gerenciar nossos beans

Bemobi Tech Talk Data: 11/01/2013

Page 13: VIII TechTalk - Spring 3

Minimizando o uso de XML

• Autowiring em quatro opções: byName, byType, ConstructorBased, autoDetect (tenta CB e byType respectivamente)

• Três anotações: @Autowired e @Inject (JSR 330) e @Resource (JSR 250)

• Beans de mesmo tipo? Use @Qualifier (autowired) e @Name (inject)• @Inject pode injetar Providers, factory methods que só devolvem a

instância ao ter o método GET chamado• Auto discovery via <context:component-scan> ou @ComponentScan

(Spring 3.1+)

Bemobi Tech Talk Data: 11/01/2013

Page 14: VIII TechTalk - Spring 3

Spring e acesso a Banco de Dados

• A partir do Spring 3, temos suporte ao Hibernate 4• JPA sem persistence.xml• JDBC com JDBCTemplate• DAO e Repositories, filosofia Spring de acesso a dados (Spring Data)• Exceções independentes de plataforma (CannotAcquireLockException ,

CannotSerializeTransactionException, CleanupFailureDataAccessException, ConcurrencyFailureException DataAccessException, DataAccessResourceFailureException DataIntegrityViolationException, DataRetrievalFailureException DeadlockLoserDataAccessException

…)• DataSource e Pooling

Bemobi Tech Talk Data: 11/01/2013

Page 15: VIII TechTalk - Spring 3

Gerenciando Transações

• Suporte a JDBC, JPA e JTA• Um transactionManager para cada tipo de acesso a dados (JDBC, JPA,

JMS etc)• Via XML com <tx:advice id="txAdvice"> ou @Transactional• Para uso das anotações basta usar <tx:annotation-driven /> ou

@EnableTransactionManagement

Bemobi Tech Talk Data: 11/01/2013

Page 16: VIII TechTalk - Spring 3

Usando Spring MVC

• Controllers são POJO’s• XML ou anotações• Diferentes ViewResolvers para diferentes saidas (xml, wap, web, pdf etc)• HandlerMapping ajuda a escolher qual controle será acionado (perfeito

para decisões de device no nosso caso)

Bemobi Tech Talk Data: 11/01/2013

Passos pelo qual um request é submetido até que o response seja entregue ao usuário

Page 17: VIII TechTalk - Spring 3

WebFlow

• Somente via XML• Cria fluxos de UI em MVC, JSF etc• Adiciona escopo de conversação• Caso o processo seja apenas procedural não envolvendo UI, usar o

commons-chains da apache (vide Subscription Novo)

Bemobi Tech Talk Data: 11/01/2013

Page 18: VIII TechTalk - Spring 3

Segurança

• Feito através do módulo Spring Security• Oito módulos: ACL, CAS, Configuration, Core, LDAP, OpenID, Web e Tag

Libs• ServletFilter org.springframework.web.filter.DelegatingFilterProxy • Sete tipos de autenticação prontos: em memória, JDBC, LDAP, OpenID,

CAS, X.509 e JAAS providers• Anotações @Secured (Spring) ou da JSR-250 @RolesAllowed (para

isso, devemos usar <global-method-security jsr250-annotations="enabled" /> )

Bemobi Tech Talk Data: 11/01/2013

Page 19: VIII TechTalk - Spring 3

E mais:

• Chamadas remotas com RMI, HTTP, JAX-WS e JAX-RS• REST através do Spring MVC com anotações de

@RequestMapping, @ResponseStatus• Desenvolvimento JMS com POJO’s e implementações de conectores

para os principais serviços de mensageria• Acesso aos beans do Spring via JMX usando apenas

@ManagedResource e @ManagedAttribute• Abstração de variáveis de ambientes e properties através do

Environment• Perfis de beans (DEV, PROD)• Suporte a JSR-107 – JCache• Suporte a JSR-349 – Bean Validation

Bemobi Tech Talk Data: 11/01/2013

Page 20: VIII TechTalk - Spring 3

Obrigado!

Bemobi Tech Talk Data: 11/01/2013