viii techtalk - spring 3
Post on 29-Jun-2015
137 Views
Preview:
DESCRIPTION
TRANSCRIPT
VIII Bemobi Tech TalkSpring 3Diego Magalhães 11/01/2013
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
Bemobi Tech Talk Data: 11/01/2013
Spring Framework
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
Bemobi Tech Talk Data: 11/01/2013
Evolução do framework
Adaptado de http://www.flickr.com/photos/mraible/4378559350/sizes/o/in/photostream/
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
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
Spring Beans
Bemobi Tech Talk Data: 11/01/2013
• 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
• 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
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
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
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
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
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
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
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
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
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
Obrigado!
Bemobi Tech Talk Data: 11/01/2013
top related