Globalcode – Open4education
Spring 3: Uma plataforma além do
Framework
Dr. Spock
Instrutor Globalcode
Senior Software Architect
Profisional 1.9
Globalcode – Open4education
@bout me
Bacharel e especialista em Física pela UFV e
Unicamp;
Instrutor Globalcode em Campinas e SP desde 2005;
Desenvolvedor de aplicações Web desde 96 e Java
desde 99;
Atuação como arquiteto de software;
Certificações Java: SCJP e SCWCD;
Palestrante em eventos nacionais e internacionais:
JustJava, TDC e JavaOne.
Globalcode – Open4education
Objetivo
“Apresentar o Spring como uma plataforma
com vários frameworks, integrações e
serviços, além dos recursos do Spring
Framework 3”
Globalcode – Open4education
A Plataforma Spring
Globalcode – Open4education
A Plataforma Spring
Globalcode – Open4education
A Plataforma Spring
Globalcode – Open4education
A Plataforma Spring
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
Spring
Webflow
Spring
Webflow
Spring
Security
Spring
Security
Spring
dm
Spring
dm
Spring
BlaseDS
Spring
BlaseDS
Spring
Web Service
Spring
Web Service
Spring
JavaConfig
Spring
JavaConfig
Spring
Integration
Spring
Integration
Spring
IDE
Spring
IDE
Spring
Batch
Spring
Batch
Spring
.NET
Spring
.NET
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
Spring
Webflow
Spring
Webflow
Spring
Security
Spring
Security
Spring
dm
Spring
dm
Spring
BlaseDS
Spring
BlaseDS
Spring
Web Service
Spring
Web Service
Spring
JavaConfig
Spring
JavaConfig
Spring
Integration
Spring
Integration
Spring
IDE
Spring
IDE
Spring
Batch
Spring
Batch
Spring
.NET
Spring
.NET
Spring
ROO
Spring
ROO
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
dm
Server
dm
Server
Groovy
Groovy
Grails
Grails
Hyperic
HQ
Hyperic
HQ
Hyperic
IQ
Hyperic
IQ
Cloud
Foundry
Cloud
Foundry
tc Server
(Tomcat)
tc Server
(Tomcat)
Spring
Tool Suite
Spring
Tool Suite
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
Globalcode – Open4education
A Plataforma Spring
Spring
Framework
Spring
Framework
Spring
GemFire
Spring
GemFire Spring
Data
Spring
Data
Spring
ActionScript
Spring
ActionScript
Spring
Phyton
Spring
Phyton
Spring
Social
Spring
Social
Spring
AOuth
Spring
AOuth
Spring
AMQP
Spring
AMQP
Globalcode – Open4education
O Spring Framework 3
Globalcode – Open4education
Spring Framework 3
Suporte a Java SE 5+
Spring Expression Language (SpEL)
Suporte a REST
Suporte a Portlet 2.0
Validação declarativa do modelo
Spring 3.0 e Java EE 6
Pruning & Deprecation
Outras melhorias
Globalcode – Open4education
Arquitetura modularizada
Suporte a Java SE 5+
Spring Expression Language (SpEL)
Suporte a REST
Suporte a Portlet 2.0
Validação declarativa do modelo
Spring 3.0 e Java EE 6
Pruning & Deprecation
Outras melhorias
Globalcode – Open4education
Suporte a Java SE 5+
Uso de Generics
TaskExecutor do Spring extende
java.util.concurrent.Executor
AsyncTaskExecutor suporta java.util.concurrent.
Future
Listener tipado: ApplicationListener<E>
ApplicationEventMulticaster detecta tipo de evento
Globalcode – Open4education
Spring JavaConfig
Incorporou o projeto Spring JavaConfig
Classes de configuração com @Configuration
Métodos fábrica anotados com @Bean
Globalcode – Open4education
Spring JavaConfig
Criação de meta anotações
Uso combinado com anotações de espereótipo
Detecção automática (nenhuma configuração!)
Globalcode – Open4education
Reestruturação
Incorporou o módulo Object/XML Mapping (OXM)
Vindo do projeto Spring Web Services
Suporta as conversões usadas no REST
Implementa acesso via SQL XML
Infra estrutura de conversão de tipos Java
Conversores de tipo e formatadores "stateless" do Java
SE 5+
Substituindo PropertyEditors padrões do JDK
Globalcode – Open4education
Spring Expression
Language (SpEL)
Linguagem de expressões baseada no Unified EL
Sintaxe similar às ELs usadas no JSP/JSF
#{ expr }
Suporta: Literais, operadores (bool, rel, =, ?:, elvis,
safe, ponto), regex, variáveis, objetos implícitos,
projeção/seleção em coleções, invocar métodos,
invocar construtores e definição de funções
Extensível através de implementação de SPI
Todos os beans definidos são objetos implícitos
Globalcode – Open4education
Spring Expression
Language (SpEL)
#{ 'Hello World'.concat(“!”) }
#{ 'Hello World'.bytes.length }
#{ new String('Hello World').toUpperCase() }
#{ systemProperties['user.region'] }
#{ myBean.property }
#{ myBean.isMember('Dr. Spock') }
#{ name = 'Dr. Roo'}
#{ T(java.lang.Math).random() }
#{ 'xyz' instanceof T(int)}
Globalcode – Open4education
Spring Expression
Language (SpEL)
Ternário: #{ boolExpr ? trueExpr : falseExpr }
Elvis: #{ expr ?: exprDefault }
Safe Navigation: #{ myBean.address?.city}
Coll. Selection: #{ products.?[price > 100.0] }
Map Selection: #{ map.?[value < 27] }
^[ selExpr ] seleciona o primeiro
$[ selExpr ] seleciona o último
Coll. Projection: #{ members.![address.city] }
Globalcode – Open4education
Spring Expression
Language (SpEL)
EL na definição de beans em XML
Globalcode – Open4education
Spring Expression
Language (SpEL)
EL em anotações dos componentes
Anotação para injeção de valores via EL: @Value
Globalcode – Open4education
Spring Expression
Language (SpEL)
Atributos de contexto
“systemProperties”
“systemEnvironment”
Referências implícitas aos beans do contexto pelo
nome (similar às expressões no JSF para os managed
beans)
Atributos de contexto web
Web: “contextParameters”, “contextAttributes”, “request”
e “session”
JSF: “param”, “initParam”, “facesContext”, etc
Globalcode – Open4education
Web: Suporte a REST
URI Templates
String definido uma URI contendo uma ou mais variáveis
Variáveis são substituídas por valores ao usar Spring
MVC
Globalcode – Open4education
Web: Suporte a REST
Anotação criada para usar URIs: @PathVariable
Globalcode – Open4education
Web: Suporte a REST
Anotação criada para usar URIs: @PathVariable
Opcional
Opcional
Globalcode – Open4education
Web: Suporte a REST
Anotação criada para usar URIs: @PathVariable
Opcional
Opcional
Captura: /hotels/42
Captura: /hotels/42
Globalcode – Open4education
Web: Suporte a REST
Anotação criada para usar URIs: @PathVariable
Opcional
Opcional
Captura: /hotels/42
Captura: /hotels/42
Captura: /hotels/42/bookings/21
Captura: /hotels/42/bookings/21
Globalcode – Open4education
Web: Suporte a REST
RestTemplate
Componente para um aplicação cliente invocar URLs
Restful
Similar a outros templates do Spring: JdbcTemplate,
JmsTemplate e WebServiceTemplate
Globalcode – Open4education
Web: Suporte a Portlet 2.0
Spring MVC 3 suporta anotações para
mapeamento das ações, requisições de recursos e
eventos do Portlet 2.0
@ActionMapping, @RenderMapping,
@ResourceMapping e @EventMapping
Globalcode – Open4education
Validação declarativa
Suporte a JSR-303 (Bean Validation)
Mesma meta informação via anotações para UI,
model e persistência.
Definição de Validadores
customizados
Globalcode – Open4education
Validação declarativa
Suporte a JSR-303 (Bean Validation)
Mesma meta informação via anotações para UI,
model e persistência.
Definição de Validadores
customizados
Globalcode – Open4education
Validação declarativa
Suporte a JSR-303 (Bean Validation)
Mesma meta informação via anotações para UI,
model e persistência.
Definição de Validadores
customizados
Globalcode – Open4education
Validação declarativa
Suporte a JSR-303 (Bean Validation)
Mesma meta informação via anotações para UI,
model e persistência.
Definição de Validadores
customizados
Globalcode – Open4education
Spring 3.0 e Java EE 6
Suporte antecipado ao Java EE 6: JSF 2.0, JPA
2.0, JSR-303 (Bean Validation), métodos
assíncronos com @Async ou @Asynchronous
(EJB 3.1).
Suporte completo ao Java EE 6: Spring 3.1
Servlet 3.0: Aguardando Glassfish 3 e Tomcat 7
JSR-236: APIs avançadas de concorrência
JSR-330: Anotações comuns para injeção de
dependências (DI)
Globalcode – Open4education
Pruning & Deprecation
Removido:
Suporte a Commons Attributes
Supote ao TopLink (em favor do JPA via EclipseLink)
Suporte a extensão de "Action" do Struts 1.x
Depreciado:
Suporte ao JUnit 3.8
Suporte ao Struts 1.x
Hierarquia de controles MVC (em favor das anotações)
Várias outras classes de suporte obsoletas
Globalcode – Open4education
Outras melhorias
Capacidade de serialização de beans em escopos
Web com uso de proxies serializáveis.
A desserialização obtem novamente as referencias
Agendamento: @Async (métodos assíncronos) e
@Scheduled para executar métodos com gatilho
baseado em máscara cron, preparado para a JSR-
236 (Concurrency Utilities for Java EE), XML
scheduling namespace
Globalcode – Open4education
Outras melhorias
Suporte a banco de dados embedded: HSQL, H2 e
Derby (JavaDB).
Extensível para adicionar outros bancos
Compatibilidade com Spring 2.5: 100% com o
modelo de programação e 95% com os pontos
de extensão
Globalcode – Open4education
Epílogo: Resumo & Futuro
Globalcode – Open4education
Resumo & Futuro
Suporte a Java SE 5+ ao logo do framework
Não funciona com Java SE 1.3 e 1.4
Suporte extensível a EL e disponível no núcleo
Validação baseada em anotações
Possibilidade de eliminar 100% do XML
Compatibilidade com o Spring 2.5 no Java SE 5+
Outros produtos evoluirão para suportar Spring 3.x
Spring 3.1: Compatibilidade completa com Java
EE 6 e suporte a conversação
Globalcode – Open4education
Mais informações
SpringSource Community
http://www.springsource.org/
SpringSource – A division of VMWare
http://www.springsource.com/
Spring Brasil User Group
http://www.springbrasil.com.br/
What's new in Spring 3.0
http://www.infoq.com/presentations/Whats-New-in-Spring-3.0
Blog da Globalcode
http://blog.globalcode.com.br/
Globalcode – Open4education
Perguntas & Respostas
Globalcode – Open4education
Thank you!
Twitter
@drspockbr
Blog do Spock
http://blog.spock.com.br/
E-mail
spock@globalcode.com.br

Spring 3: Uma Plataforma além do Framework

  • 1.
    Globalcode – Open4education Spring3: Uma plataforma além do Framework Dr. Spock Instrutor Globalcode Senior Software Architect Profisional 1.9
  • 2.
    Globalcode – Open4education @boutme Bacharel e especialista em Física pela UFV e Unicamp; Instrutor Globalcode em Campinas e SP desde 2005; Desenvolvedor de aplicações Web desde 96 e Java desde 99; Atuação como arquiteto de software; Certificações Java: SCJP e SCWCD; Palestrante em eventos nacionais e internacionais: JustJava, TDC e JavaOne.
  • 3.
    Globalcode – Open4education Objetivo “Apresentaro Spring como uma plataforma com vários frameworks, integrações e serviços, além dos recursos do Spring Framework 3”
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework
  • 9.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework Spring Webflow Spring Webflow Spring Security Spring Security Spring dm Spring dm Spring BlaseDS Spring BlaseDS Spring Web Service Spring Web Service Spring JavaConfig Spring JavaConfig Spring Integration Spring Integration Spring IDE Spring IDE Spring Batch Spring Batch Spring .NET Spring .NET
  • 10.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework Spring Webflow Spring Webflow Spring Security Spring Security Spring dm Spring dm Spring BlaseDS Spring BlaseDS Spring Web Service Spring Web Service Spring JavaConfig Spring JavaConfig Spring Integration Spring Integration Spring IDE Spring IDE Spring Batch Spring Batch Spring .NET Spring .NET Spring ROO Spring ROO
  • 11.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework
  • 12.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework dm Server dm Server Groovy Groovy Grails Grails Hyperic HQ Hyperic HQ Hyperic IQ Hyperic IQ Cloud Foundry Cloud Foundry tc Server (Tomcat) tc Server (Tomcat) Spring Tool Suite Spring Tool Suite
  • 13.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework
  • 14.
    Globalcode – Open4education APlataforma Spring Spring Framework Spring Framework Spring GemFire Spring GemFire Spring Data Spring Data Spring ActionScript Spring ActionScript Spring Phyton Spring Phyton Spring Social Spring Social Spring AOuth Spring AOuth Spring AMQP Spring AMQP
  • 15.
  • 16.
    Globalcode – Open4education SpringFramework 3 Suporte a Java SE 5+ Spring Expression Language (SpEL) Suporte a REST Suporte a Portlet 2.0 Validação declarativa do modelo Spring 3.0 e Java EE 6 Pruning & Deprecation Outras melhorias
  • 17.
    Globalcode – Open4education Arquiteturamodularizada Suporte a Java SE 5+ Spring Expression Language (SpEL) Suporte a REST Suporte a Portlet 2.0 Validação declarativa do modelo Spring 3.0 e Java EE 6 Pruning & Deprecation Outras melhorias
  • 18.
    Globalcode – Open4education Suportea Java SE 5+ Uso de Generics TaskExecutor do Spring extende java.util.concurrent.Executor AsyncTaskExecutor suporta java.util.concurrent. Future Listener tipado: ApplicationListener<E> ApplicationEventMulticaster detecta tipo de evento
  • 19.
    Globalcode – Open4education SpringJavaConfig Incorporou o projeto Spring JavaConfig Classes de configuração com @Configuration Métodos fábrica anotados com @Bean
  • 20.
    Globalcode – Open4education SpringJavaConfig Criação de meta anotações Uso combinado com anotações de espereótipo Detecção automática (nenhuma configuração!)
  • 21.
    Globalcode – Open4education Reestruturação Incorporouo módulo Object/XML Mapping (OXM) Vindo do projeto Spring Web Services Suporta as conversões usadas no REST Implementa acesso via SQL XML Infra estrutura de conversão de tipos Java Conversores de tipo e formatadores "stateless" do Java SE 5+ Substituindo PropertyEditors padrões do JDK
  • 22.
    Globalcode – Open4education SpringExpression Language (SpEL) Linguagem de expressões baseada no Unified EL Sintaxe similar às ELs usadas no JSP/JSF #{ expr } Suporta: Literais, operadores (bool, rel, =, ?:, elvis, safe, ponto), regex, variáveis, objetos implícitos, projeção/seleção em coleções, invocar métodos, invocar construtores e definição de funções Extensível através de implementação de SPI Todos os beans definidos são objetos implícitos
  • 23.
    Globalcode – Open4education SpringExpression Language (SpEL) #{ 'Hello World'.concat(“!”) } #{ 'Hello World'.bytes.length } #{ new String('Hello World').toUpperCase() } #{ systemProperties['user.region'] } #{ myBean.property } #{ myBean.isMember('Dr. Spock') } #{ name = 'Dr. Roo'} #{ T(java.lang.Math).random() } #{ 'xyz' instanceof T(int)}
  • 24.
    Globalcode – Open4education SpringExpression Language (SpEL) Ternário: #{ boolExpr ? trueExpr : falseExpr } Elvis: #{ expr ?: exprDefault } Safe Navigation: #{ myBean.address?.city} Coll. Selection: #{ products.?[price > 100.0] } Map Selection: #{ map.?[value < 27] } ^[ selExpr ] seleciona o primeiro $[ selExpr ] seleciona o último Coll. Projection: #{ members.![address.city] }
  • 25.
    Globalcode – Open4education SpringExpression Language (SpEL) EL na definição de beans em XML
  • 26.
    Globalcode – Open4education SpringExpression Language (SpEL) EL em anotações dos componentes Anotação para injeção de valores via EL: @Value
  • 27.
    Globalcode – Open4education SpringExpression Language (SpEL) Atributos de contexto “systemProperties” “systemEnvironment” Referências implícitas aos beans do contexto pelo nome (similar às expressões no JSF para os managed beans) Atributos de contexto web Web: “contextParameters”, “contextAttributes”, “request” e “session” JSF: “param”, “initParam”, “facesContext”, etc
  • 28.
    Globalcode – Open4education Web:Suporte a REST URI Templates String definido uma URI contendo uma ou mais variáveis Variáveis são substituídas por valores ao usar Spring MVC
  • 29.
    Globalcode – Open4education Web:Suporte a REST Anotação criada para usar URIs: @PathVariable
  • 30.
    Globalcode – Open4education Web:Suporte a REST Anotação criada para usar URIs: @PathVariable Opcional Opcional
  • 31.
    Globalcode – Open4education Web:Suporte a REST Anotação criada para usar URIs: @PathVariable Opcional Opcional Captura: /hotels/42 Captura: /hotels/42
  • 32.
    Globalcode – Open4education Web:Suporte a REST Anotação criada para usar URIs: @PathVariable Opcional Opcional Captura: /hotels/42 Captura: /hotels/42 Captura: /hotels/42/bookings/21 Captura: /hotels/42/bookings/21
  • 33.
    Globalcode – Open4education Web:Suporte a REST RestTemplate Componente para um aplicação cliente invocar URLs Restful Similar a outros templates do Spring: JdbcTemplate, JmsTemplate e WebServiceTemplate
  • 34.
    Globalcode – Open4education Web:Suporte a Portlet 2.0 Spring MVC 3 suporta anotações para mapeamento das ações, requisições de recursos e eventos do Portlet 2.0 @ActionMapping, @RenderMapping, @ResourceMapping e @EventMapping
  • 35.
    Globalcode – Open4education Validaçãodeclarativa Suporte a JSR-303 (Bean Validation) Mesma meta informação via anotações para UI, model e persistência. Definição de Validadores customizados
  • 36.
    Globalcode – Open4education Validaçãodeclarativa Suporte a JSR-303 (Bean Validation) Mesma meta informação via anotações para UI, model e persistência. Definição de Validadores customizados
  • 37.
    Globalcode – Open4education Validaçãodeclarativa Suporte a JSR-303 (Bean Validation) Mesma meta informação via anotações para UI, model e persistência. Definição de Validadores customizados
  • 38.
    Globalcode – Open4education Validaçãodeclarativa Suporte a JSR-303 (Bean Validation) Mesma meta informação via anotações para UI, model e persistência. Definição de Validadores customizados
  • 39.
    Globalcode – Open4education Spring3.0 e Java EE 6 Suporte antecipado ao Java EE 6: JSF 2.0, JPA 2.0, JSR-303 (Bean Validation), métodos assíncronos com @Async ou @Asynchronous (EJB 3.1). Suporte completo ao Java EE 6: Spring 3.1 Servlet 3.0: Aguardando Glassfish 3 e Tomcat 7 JSR-236: APIs avançadas de concorrência JSR-330: Anotações comuns para injeção de dependências (DI)
  • 40.
    Globalcode – Open4education Pruning& Deprecation Removido: Suporte a Commons Attributes Supote ao TopLink (em favor do JPA via EclipseLink) Suporte a extensão de "Action" do Struts 1.x Depreciado: Suporte ao JUnit 3.8 Suporte ao Struts 1.x Hierarquia de controles MVC (em favor das anotações) Várias outras classes de suporte obsoletas
  • 41.
    Globalcode – Open4education Outrasmelhorias Capacidade de serialização de beans em escopos Web com uso de proxies serializáveis. A desserialização obtem novamente as referencias Agendamento: @Async (métodos assíncronos) e @Scheduled para executar métodos com gatilho baseado em máscara cron, preparado para a JSR- 236 (Concurrency Utilities for Java EE), XML scheduling namespace
  • 42.
    Globalcode – Open4education Outrasmelhorias Suporte a banco de dados embedded: HSQL, H2 e Derby (JavaDB). Extensível para adicionar outros bancos Compatibilidade com Spring 2.5: 100% com o modelo de programação e 95% com os pontos de extensão
  • 43.
  • 44.
    Globalcode – Open4education Resumo& Futuro Suporte a Java SE 5+ ao logo do framework Não funciona com Java SE 1.3 e 1.4 Suporte extensível a EL e disponível no núcleo Validação baseada em anotações Possibilidade de eliminar 100% do XML Compatibilidade com o Spring 2.5 no Java SE 5+ Outros produtos evoluirão para suportar Spring 3.x Spring 3.1: Compatibilidade completa com Java EE 6 e suporte a conversação
  • 45.
    Globalcode – Open4education Maisinformações SpringSource Community http://www.springsource.org/ SpringSource – A division of VMWare http://www.springsource.com/ Spring Brasil User Group http://www.springbrasil.com.br/ What's new in Spring 3.0 http://www.infoq.com/presentations/Whats-New-in-Spring-3.0 Blog da Globalcode http://blog.globalcode.com.br/
  • 46.
  • 47.
    Globalcode – Open4education Thankyou! Twitter @drspockbr Blog do Spock http://blog.spock.com.br/ E-mail spock@globalcode.com.br