SlideShare uma empresa Scribd logo
1 de 20
VIII Bemobi Tech Tal k
Spr i ng 3
Di ego Magal hães 11/ 01/ 2013
Bemobi Tech Tal k
Agenda
Dat a: 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 Tal k Dat a: 11/01/2013
Spring Framework
Bemobi Tech Tal k Dat a: 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 Tal k Dat a: 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)
Di gi t e o nome do Proj et o Dat a:
Pesquisa InfoQ de Out/2012 - http://www.infoq.com/research/jvm-web-frameworks
Bemobi Tech Tal k
Spring Beans
Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 exemplos
para aspectos
Bemobi Tech Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 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 Tal k Dat a: 11/01/2013
Obrigado!
Bemobi Tech Tal k Dat a: 11/01/2013

Mais conteúdo relacionado

Mais procurados

TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScripttdc-globalcode
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETEduardo Pires
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
WSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatWSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatEdgar Silva
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalREduardo Pires
 
Desenvolvimento para web com Meteor
Desenvolvimento para web com MeteorDesenvolvimento para web com Meteor
Desenvolvimento para web com MeteorWeverton Gomes
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBEdgar Silva
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018André Luiz Forchesatto
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSFDalton Valadares
 
Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Afonso Brandão
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.XEduardo Pires
 

Mais procurados (20)

ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Começando com meteor
Começando com meteorComeçando com meteor
Começando com meteor
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Web Services
Web ServicesWeb Services
Web Services
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NET
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
WSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatWSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao Tomcat
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalR
 
Desenvolvimento para web com Meteor
Desenvolvimento para web com MeteorDesenvolvimento para web com Meteor
Desenvolvimento para web com Meteor
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESB
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSF
 
Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)
 
Spring Capitulo 01
Spring Capitulo 01Spring Capitulo 01
Spring Capitulo 01
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.X
 

Destaque

Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Integracao Seam Spring
Integracao Seam SpringIntegracao Seam Spring
Integracao Seam SpringDr. Spock
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilMarcio Garcia
 
SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS
SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS
SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS autonomo
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 

Destaque (11)

Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
O framework spring
O framework springO framework spring
O framework spring
 
Conceitos de Java Web
Conceitos de Java WebConceitos de Java Web
Conceitos de Java Web
 
Spring Web Flow
Spring Web FlowSpring Web Flow
Spring Web Flow
 
3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo
 
Integracao Seam Spring
Integracao Seam SpringIntegracao Seam Spring
Integracao Seam Spring
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
 
SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS
SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS
SPRING 5.1.2 PASSO A PASSO: APLICAÇÕES PRÁTICAS
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Framework web 3 - JSF + Spring boot
Framework web 3 - JSF + Spring bootFramework web 3 - JSF + Spring boot
Framework web 3 - JSF + Spring boot
 

Semelhante a VIII TechTalk - Spring 3

Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
Webcast MSDN - Enterprise Library
Webcast MSDN - Enterprise LibraryWebcast MSDN - Enterprise Library
Webcast MSDN - Enterprise LibraryLuciano Condé
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEMarco Antonio Maciel
 
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
 
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 VirgoRegis Machado
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Jeronimo Zucco
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com PolymerStefan Horochovec
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
Sistemas Distribuídos Utilizando Microserviços e AWS
Sistemas Distribuídos Utilizando Microserviços e AWSSistemas Distribuídos Utilizando Microserviços e AWS
Sistemas Distribuídos Utilizando Microserviços e AWSJonas Silveira
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEBDescobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEBelliando dias
 
Processo para a Construção de Protótipos
Processo para a Construção de ProtótiposProcesso para a Construção de Protótipos
Processo para a Construção de ProtótiposOtávio Souza
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 

Semelhante a VIII TechTalk - Spring 3 (20)

Mini curso JBC
Mini curso JBCMini curso JBC
Mini curso JBC
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
Webcast MSDN - Enterprise Library
Webcast MSDN - Enterprise LibraryWebcast MSDN - Enterprise Library
Webcast MSDN - Enterprise Library
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 
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 ...
 
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
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com Polymer
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Sistemas Distribuídos Utilizando Microserviços e AWS
Sistemas Distribuídos Utilizando Microserviços e AWSSistemas Distribuídos Utilizando Microserviços e AWS
Sistemas Distribuídos Utilizando Microserviços e AWS
 
Palestra
PalestraPalestra
Palestra
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEBDescobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
 
Processo para a Construção de Protótipos
Processo para a Construção de ProtótiposProcesso para a Construção de Protótipos
Processo para a Construção de Protótipos
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 

Mais de Diego Magalhães

Mais de Diego Magalhães (7)

Evento CODERS
Evento CODERSEvento CODERS
Evento CODERS
 
X Bemobi Tech Talk - Maven
X Bemobi Tech Talk - MavenX Bemobi Tech Talk - Maven
X Bemobi Tech Talk - Maven
 
II Bemobi Tech Talk - NoSQL
II Bemobi Tech Talk - NoSQLII Bemobi Tech Talk - NoSQL
II Bemobi Tech Talk - NoSQL
 
Comprafacil - Mobile Case
Comprafacil - Mobile CaseComprafacil - Mobile Case
Comprafacil - Mobile Case
 
Java Messaging Service
Java Messaging ServiceJava Messaging Service
Java Messaging Service
 
Botnet: Uma visao geral
Botnet: Uma visao geralBotnet: Uma visao geral
Botnet: Uma visao geral
 
Fowarder Receiver Pattern
Fowarder Receiver PatternFowarder Receiver Pattern
Fowarder Receiver Pattern
 

VIII TechTalk - Spring 3

  • 1. VIII Bemobi Tech Tal k Spr i ng 3 Di ego Magal hães 11/ 01/ 2013
  • 2. Bemobi Tech Tal k Agenda Dat a: 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
  • 3. Bemobi Tech Tal k Dat a: 11/01/2013 Spring Framework
  • 4. Bemobi Tech Tal k Dat a: 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
  • 5. Bemobi Tech Tal k Dat a: 11/01/2013 Evolução do framework Adaptado de http://www.flickr.com/photos/mraible/4378559350/sizes/o/in/photostream/
  • 6. Adoção (Top 20 frameworks na JVM) Di gi t e o nome do Proj et o Dat a: Pesquisa InfoQ de Out/2012 - http://www.infoq.com/research/jvm-web-frameworks
  • 7. Bemobi Tech Tal k Spring Beans Dat a: 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
  • 8. Spring Beans Bemobi Tech Tal k Dat a: 11/01/2013
  • 9. • 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 Tal k Dat a: 11/01/2013
  • 10. • 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 Tal k Dat a: 11/01/2013
  • 11. 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 exemplos para aspectos Bemobi Tech Tal k Dat a: 11/01/2013
  • 12. 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 Tal k Dat a: 11/01/2013
  • 13. 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 Tal k Dat a: 11/01/2013
  • 14. 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 Tal k Dat a: 11/01/2013
  • 15. 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 Tal k Dat a: 11/01/2013
  • 16. 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 Tal k Dat a: 11/01/2013 Passos pelo qual um request é submetido até que o response seja entregue ao usuário
  • 17. 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 Tal k Dat a: 11/01/2013
  • 18. 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 Tal k Dat a: 11/01/2013
  • 19. 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 Tal k Dat a: 11/01/2013
  • 20. Obrigado! Bemobi Tech Tal k Dat a: 11/01/2013

Notas do Editor

  1. 2000 - J2SE v1.3 , J2EE v1.2.1  EJB 2  = - difficult deployment descriptors , - difficult testing , - lot of redundant artifacts 2001 - J2SE v1.3 2003 - J2SE v1.4, J2EE v1.4 2004 - Spring v1.0 First Spring Framework - dependency injection (IoP), - competitor to J2EE 2006 - J2SE v5, Java EE v5, Spring v2.0, Java EE 5 (EJB 3.0) - a lot of functions inspired by Spring , - elimination of component, home and remote interfaces 2007 - Spring v2.5 Full Java 6 and Java EE 5 support (JDBC 4.0, JTA 1.1, JavaMail 1.4, JAX-WS 2.0), Full-featured annotation-driven dependency injection, including support for &apos;qualifiers‘ 2009 - Java SE v6, Java EE v6, Spring v3.0, Java EE 6 (EJB 3.1)  = - interfaces are optional , - singleton beans , - cron-like scheduling , - embeddable containers , Spring 3.0 = - Spring Expression Language , - MVC-Framework with improved REST support 2011 - Java SE v 7, Spring v 3.1 = Cache Abstraction, Bean Profiles, Configuration Anotations Environment absctracton, Suporte HIB 4, JPA Persistence sem o persistence.xml 2012 – Spring 3.2 goes GA = Refined Java SE 7 support  , *  Concurrency refinements across the framework , avoiding the use of synchronization wherever possible – in particular for scoped/prototype beans * Allowing for  @Autowired and @Value to be used as meta-annotations , e.g. to build custom injection annotations in combination with specific qualifiers * Support for  custom @Bean definition annotations in @Configuration classes , e.g. in combination with specific qualifiers, @Lazy, @Primary, etc * Support for  loading WebApplicationContexts in the TestContext framework , and further improvements for web application testing * Early support for  JCache 0.5 (JSR-107)  as a backend for Spring&apos;s cache abstraction