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