SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Spring Framework 3
Um 'brainstorm' de novas
    funcionalidades
   Dr. Spock (a.k.a. Alberto Lemos)
          Instrutor Globalcode
        Senior Software Architect



                                    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
                 Spring
              Framework
              Framework




                          Globalcode – Open4education
A Plataforma Spring
                Spring
                 Spring      Spring
                              Spring
                Batch
                 Batch    Integration
                           Integration
    Spring
     Spring                                     Spring
                                                 Spring
      IDE                                        .NET
                                                  .NET
       IDE

  Spring
   Spring
                    Spring
                     Spring                     Spring
                                                 Spring
 Webflow                                      JavaConfig
 Webflow          Framework
                  Framework                    JavaConfig

     Spring
      Spring                               Spring
                                            Spring
    Security
     Security                            Web Service
                                         Web Service
                Spring
                 Spring     Spring
                             Spring
                  dm
                   dm      BlaseDS
                            BlaseDS

                                      Globalcode – Open4education
A Plataforma Spring
                Spring
                 Spring      Spring
                              Spring
                Batch
                 Batch    Integration
                           Integration
    Spring
     Spring                                     Spring
                                                 Spring
      IDE                         Spring         .NET
                                                  .NET
       IDE                         Spring
                                   ROO
                                    ROO
  Spring
   Spring
                    Spring
                     Spring                     Spring
                                                 Spring
 Webflow                                      JavaConfig
 Webflow          Framework
                  Framework                    JavaConfig

     Spring
      Spring                               Spring
                                            Spring
    Security
     Security                            Web Service
                                         Web Service
                Spring
                 Spring     Spring
                             Spring
                  dm
                   dm      BlaseDS
                            BlaseDS

                                      Globalcode – Open4education
A Plataforma Spring




                   Spring
                    Spring
                 Framework
                  Framework




                              Globalcode – Open4education
A Plataforma Spring
                  Spring
                   Spring
   tc Server
    tc Server   Tool Suite
                 Tool Suite       Cloud
                                   Cloud
   (Tomcat)
    (Tomcat)                     Foundry
                                  Foundry



   dm              Spring
                    Spring               Hyperic
    dm           Framework                Hyperic
 Server
  Server          Framework                IQ
                                            IQ



    Groovy
    Groovy                      Hyperic
                                 Hyperic
                 Grails
                 Grails           HQ
                                   HQ


                              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

Weitere ähnliche Inhalte

Ähnlich wie Spring Framework 3: Um 'brainstorm' de novas funcionalidades

2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET
Bruno Capuano
 
Il Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | Roma
Il Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | RomaIl Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | Roma
Il Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | Roma
CA Technologies Italia
 
Core rest edgarsilva_v1
Core rest edgarsilva_v1Core rest edgarsilva_v1
Core rest edgarsilva_v1
Edgar Silva
 
Lecture1
Lecture1Lecture1
Lecture1
orgil
 
详细介绍什么是Java虚拟机(JVM)介绍资料
详细介绍什么是Java虚拟机(JVM)介绍资料详细介绍什么是Java虚拟机(JVM)介绍资料
详细介绍什么是Java虚拟机(JVM)介绍资料
wensheng wei
 
Seminario Ruby On Rails Aula Open Source
Seminario Ruby On Rails Aula Open SourceSeminario Ruby On Rails Aula Open Source
Seminario Ruby On Rails Aula Open Source
Sergio Alonso
 
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиковCodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest
 
Glass fishjavaee6directseminar
Glass fishjavaee6directseminarGlass fishjavaee6directseminar
Glass fishjavaee6directseminar
Yoshio Terada
 
Adobe Flash Platform Update 2010/09
Adobe Flash Platform Update 2010/09Adobe Flash Platform Update 2010/09
Adobe Flash Platform Update 2010/09
Keisuke Todoroki
 
автоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rcавтоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rc
Igor Khrol
 
No sql pour valtech tech days
No sql pour valtech tech daysNo sql pour valtech tech days
No sql pour valtech tech days
Claude Falguiere
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶
wensheng wei
 

Ähnlich wie Spring Framework 3: Um 'brainstorm' de novas funcionalidades (20)

2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET
 
DevInRio 2010 - NodeJS
DevInRio 2010 - NodeJSDevInRio 2010 - NodeJS
DevInRio 2010 - NodeJS
 
Der lachende Dritte
Der lachende DritteDer lachende Dritte
Der lachende Dritte
 
Il Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | Roma
Il Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | RomaIl Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | Roma
Il Cloud chiavi in mano | Tommaso Vitale (CA Technologies) | Roma
 
Core rest edgarsilva_v1
Core rest edgarsilva_v1Core rest edgarsilva_v1
Core rest edgarsilva_v1
 
Lecture1
Lecture1Lecture1
Lecture1
 
详细介绍什么是Java虚拟机(JVM)介绍资料
详细介绍什么是Java虚拟机(JVM)介绍资料详细介绍什么是Java虚拟机(JVM)介绍资料
详细介绍什么是Java虚拟机(JVM)介绍资料
 
Jetty Introduction
Jetty IntroductionJetty Introduction
Jetty Introduction
 
Seminario Ruby On Rails Aula Open Source
Seminario Ruby On Rails Aula Open SourceSeminario Ruby On Rails Aula Open Source
Seminario Ruby On Rails Aula Open Source
 
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиковCodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
 
Glass fishjavaee6directseminar
Glass fishjavaee6directseminarGlass fishjavaee6directseminar
Glass fishjavaee6directseminar
 
Adobe Flash Platform Update 2010/09
Adobe Flash Platform Update 2010/09Adobe Flash Platform Update 2010/09
Adobe Flash Platform Update 2010/09
 
JVM 学习笔记
JVM 学习笔记JVM 学习笔记
JVM 学习笔记
 
автоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rcавтоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rc
 
Architecture related with Zend Framework (Japanese only)
Architecture related with Zend Framework (Japanese only)Architecture related with Zend Framework (Japanese only)
Architecture related with Zend Framework (Japanese only)
 
Android 2.2 手機應用程式設計:第二章 開發環境安裝
Android 2.2 手機應用程式設計:第二章 開發環境安裝Android 2.2 手機應用程式設計:第二章 開發環境安裝
Android 2.2 手機應用程式設計:第二章 開發環境安裝
 
Seguridad en Servicios Web
Seguridad en Servicios WebSeguridad en Servicios Web
Seguridad en Servicios Web
 
No sql pour valtech tech days
No sql pour valtech tech daysNo sql pour valtech tech days
No sql pour valtech tech days
 
IIS7.5概要 10月17日
IIS7.5概要 10月17日IIS7.5概要 10月17日
IIS7.5概要 10月17日
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶
 

Mehr von Dr. Spock

Mehr von Dr. Spock (20)

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific Language
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2
 
Workshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysWorkshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToys
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring Mobile
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software Enterprise
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvel
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e Java
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App Engine
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSF
 

Spring Framework 3: Um 'brainstorm' de novas funcionalidades

  • 1. Spring Framework 3 Um 'brainstorm' de novas funcionalidades Dr. Spock (a.k.a. Alberto Lemos) Instrutor Globalcode Senior Software Architect Globalcode – Open4education
  • 2. A Plataforma Spring Globalcode – Open4education
  • 3. A Plataforma Spring Globalcode – Open4education
  • 4. A Plataforma Spring Globalcode – Open4education
  • 5. A Plataforma Spring Globalcode – Open4education
  • 6. A Plataforma Spring Spring Spring Framework Framework Globalcode – Open4education
  • 7. A Plataforma Spring Spring Spring Spring Spring Batch Batch Integration Integration Spring Spring Spring Spring IDE .NET .NET IDE Spring Spring Spring Spring Spring Spring Webflow JavaConfig Webflow Framework Framework JavaConfig Spring Spring Spring Spring Security Security Web Service Web Service Spring Spring Spring Spring dm dm BlaseDS BlaseDS Globalcode – Open4education
  • 8. A Plataforma Spring Spring Spring Spring Spring Batch Batch Integration Integration Spring Spring Spring Spring IDE Spring .NET .NET IDE Spring ROO ROO Spring Spring Spring Spring Spring Spring Webflow JavaConfig Webflow Framework Framework JavaConfig Spring Spring Spring Spring Security Security Web Service Web Service Spring Spring Spring Spring dm dm BlaseDS BlaseDS Globalcode – Open4education
  • 9. A Plataforma Spring Spring Spring Framework Framework Globalcode – Open4education
  • 10. A Plataforma Spring Spring Spring tc Server tc Server Tool Suite Tool Suite Cloud Cloud (Tomcat) (Tomcat) Foundry Foundry dm Spring Spring Hyperic dm Framework Hyperic Server Server Framework IQ IQ Groovy Groovy Hyperic Hyperic Grails Grails HQ HQ Globalcode – Open4education
  • 11. O Spring Framework 3 Globalcode – Open4education
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. Spring JavaConfig Incorporou o projeto Spring JavaConfig Classes de configuração com @Configuration Métodos fábrica anotados com @Bean Globalcode – Open4education
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. Spring Expression Language (SpEL) EL na definição de beans em XML Globalcode – Open4education
  • 22. Spring Expression Language (SpEL) EL em anotações dos componentes Anotação para injeção de valores via EL: @Value Globalcode – Open4education
  • 23. 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
  • 24. 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
  • 25. Web: Suporte a REST Anotação criada para usar URIs: @PathVariable Globalcode – Open4education
  • 26. Web: Suporte a REST Anotação criada para usar URIs: @PathVariable Opcional Opcional Globalcode – Open4education
  • 27. Web: Suporte a REST Anotação criada para usar URIs: @PathVariable Opcional Opcional Captura: /hotels/42 Captura: /hotels/42 Globalcode – Open4education
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. Epílogo: Resumo & Futuro Globalcode – Open4education
  • 40. 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
  • 41. 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