SPRING
Overview do framework mais
popular para
desenvolvimento em Java
Mariana Azevedo
Sumário
◦ Por que criaram o Spring?
◦ Conceitos essenciais
◦ Spring Framework
◦ Spring Projects – overview
◦ Spring Boot
◦ Spring Data
◦ Spring MVC
◦ Roadmap – atualidade
Por que criaram
o Spring?
• Java: linguagem multi-
Plataforma que ganhou
força na guerra dos
browsers em 95.
• Conceito de J2EE/Java
EE: surgiu somente no
Java 1.2.
• EJB Java EE: framework
robusto com várias APIs
– JTA, JPA, RMI…
Por que criaram o Spring?
◦ Rod Johnson
◦ Crítica ao padrão arquitetural de
desenvolvimento da Sun
Microsystems (EJB).
◦ Expert One-To-One J2EE Design and
Development, lançado em 2002.
◦ Criação do Spring: Expert One-To-
One J2EE Development Without EJB
do Rod Johnson (2004).
Por que criaram
o Spring?
• Arquitetura: Lógica +
Servidor de aplicação -
controle transactional,
Plataforma de
persistência (Entity
Beans) pooling de
threads, mensageria,
etc... Exemplo:
Websphere (IBM),
JBossESB.
• Problema: acoplamento
e complexidade. Ainda
tinha recursos básicos:
generics, annotations,
autoboxing, etc…
Conceitos essenciais
Não precisa de um servidor de aplicação para funcionar, fazendo
uso apenas da JVM (para qualquer solução, não só as corporativas);
Utilizar apenas aquilo que é necessário para o projeto: agregar
somente os componentes necessários. Isso torna a arquitetura mais
leve, fácil de compreender, manter e evoluir;
Baseado no conceito de injeção de dependências, que é uma
especialização da inversão de controle.
Conceitos essenciais – IoC
◦ IoC: delegar para outro elemento
o controle sobre como e quando
um objeto deve ser criado e
quando um método deve ser
executado.
◦ Constructor Injection
◦ Getter/Setter Injection
◦ Interface Injection
◦ Service Locator
◦ IoC Container
◦ Gerenciar a injeção automática de
dependência em toda aplicação.
◦ Onde fica? Spring Core Container
Conceitos essenciais – DI
◦ DI: a classe deixa de se preocupar
em como resolver as suas
dependências.
◦ DI é uma maneira de implementar
o IoC
◦ Não precisamos utilizar o new para
criar os objetos por ele gerenciados
◦ DIP: Depend on abstractions, not
on concretions
◦ Robert Martin – Clean Code
◦ SOLID principles
◦ Design Pattern
Conceitos essenciais – DI
Conceitos essenciais – DI
Spring Framework
Spring Framework
Servlet API (JSR 340)
WebSocket API (JSR
356)
Concurrency Utilities
(JSR 236)
JSON Binding API
(JSR 367)
Bean Validation (JSR
303)
JPA (JSR 338) JMS (JSR 914)
Dependency
Injection (JSR 330)
Common
Annotations (JSR
250)
Configurações de
JTA / JCA para
coordenação de
transações, se
necessário.
Spring Framework
Spring
Framework
É onde se encontram as classes básicas para
implementação do Beans
Conteúdo
• Gerenciamento dos classloaders
• Reflexão
• Tratamento de recursos
• Strings
Spring
Framework
É um objeto que é instanciado, montado e
gerenciado por um contêiner Spring IoC.
Escopos
• Singleton: o container cria uma única instância desse bean;
• Prototype: retorna uma instância diferente toda vez que for
solicitada do container;
• Request: cria um proxy a ser injetado e instancia o bean de
destino quando for necessário no request;
• Session: o mesmo do Request, mas mantém o mesmo bean
em uma sessão;
• Application: cria a instância do bean para o ciclo de vida
de um ServletContext;
• Websocket: o mesmo comportamento do Session, mas
dentro do context do WebSocket.
Spring
Framework
Inicializado
pelo container
Método de init
executado (se
existir)
Bean é
utilizado
Método de
destroy
executado
Bean
destruído
Spring
Framework
Responsável por instanciar, configurar e montar os
beans (configuração de XML, anotações Java e/ou
código Java nos arquivos de configuração).
Tipos
•BeanFactory: somente em Applets e dispositivos móveis. É
usado raramente e seu uso é desencorajado pela equipe
Spring.
•ApplicationContext: também funciona como um factory e
suas implementações adicionam algumas funcionalidades
extras De forma geral, é quem gerencia o ciclo de vida de um
bean. Exemplos: AnnotationConfigApplicationContext,
AnnotationConfigWebApplicationContext.
•ApplicationEvent: manipula eventos do ApplicationContext,
necessários para carregar os beans. Exemplo:
ContextStartedEvent, ContextStoppedEvent.
Spring
Framework
Responsável por instanciar, configurar e montar os
beans (configuração de XML, anotações Java e/ou
código Java nos arquivos de configuração).
Tipos
•BeanFactory: somente em Applets e dispositivos móveis. É
usado raramente e seu uso é desencorajado pela equipe
Spring.
•ApplicationContext: também funciona como um factory e
suas implementações adicionam algumas funcionalidades
extras De forma geral, é quem gerencia o ciclo de vida de um
bean. Exemplos: AnnotationConfigApplicationContext,
AnnotationConfigWebApplicationContext.
•ApplicationEvent: manipula eventos do ApplicationContext,
necessários para carregar os beans. Exemplo:
ContextStartedEvent, ContextStoppedEvent.
Spring
Framework
É a Spring Expression Language, baseada no EL do
JSP, criada para definir valores e comportamentos
para os beans
Exemplos
• @Value(“{profile.level}”)
private String level;
• @Value(“8”)
private int departments;
Spring Projects - overview
Spring Boot Spring Data Spring Cloud
Spring Projects - overview
Spring Security Spring RESTDocs Spring Batch
Spring Projects - overview
Spring Cloud
Data Flow
Spring Session
Spring
Integration
Spring
HATEOAS
Spring AMQP
Spring for
Android
Spring
CredHub
Spring Flo
Spring for
Apache
Kafka
Spring LDAP Spring Mobile Spring Roo
Spring Shell
Spring
Statemachine
Spring Vault
Spring Web
Flow
Spring Web
Services
Spring MVC
Spring Boot
Permite criar uma
aplicação Spring de
maneira eficiente e
eficaz, além de
facilmente colocá-la em
funcionamento (não
depende de um servidor
de aplicação).
Spring Boot
Initializr:
https://start.spring.io/
Spring Boot
@SpringBootApplication:
EnableAutoConfiguration
ComponentScan
Spring Data
Tem como proposta de
unificar e facilitar o acesso
a diferentes tecnologias
de armazenamento de
dados, como bancos de
dados relacionais e os
NoSQL.
Spring Data
Exemplo Repository/DAO
Spring MVC
É a estrutura Web original
criada na Servlet API do
Spring Framework. Possui as
funcionalidades necessárias
para criar uma aplicação
web: módulo HTTP
(request/response),
delegação de
responsabilidades e
implementação do padrão
MVC.
Spring MVC
Exemplo RESTController
Roadmap – evolução do projeto
Java EE e Spring – as
críticas de 2004 foram
fundamentais para
evolução de ambos
projetos.
Em 2009, foi vendido
para a VMWare. Hoje
é mantido pela
Pivotal (também da
VMWare)
Vários novos projetos
foram criados para
atender a mercado:
Kafka, ElasticSearch,
Serveless, etc...
A partir do Spring
Framework 5 –
baseline é o Java 8
(mas suporta versões
mais novas)
Roadmap – evolução do projeto
A grande
novidade do
Spring Framework
5: programação
reativa
Projeto
Spring WebFlux
Projeto Spring Data
R2DBC
Spring Graal
Native 0.6.0 –
lançado em Abril
de 2020
Roadmap – evolução do projeto
Spring Boot 2.3.0.M4
(Abril 2020)
Spring Boot 2.3 já é
compatível com Java 14
(Abril 2020)
Projeto Spring
Authorization Server
Roadmap –
evolução do
projeto
Nova briga
• Spring Boot
• Micronauts
• Quarkus
• Microprofile
Motivo:
performance
Referências sobre o tema
Documentação oficial: Artigos sobre SOLID:
Princípios S.O.L.I.D: o que
são e porque projetos
devem utilizá-los
(https://bit.ly/2V6NWRg)
S.O.L.I.D principles: what
are they and why projects
should use them
(https://bit.ly/2K5G78f)
RESTful APIs com Java e
Spring Framework:
Construindo uma API
RESTful com Java e Spring
Framework — Parte 1
(https://bit.ly/34zCEs0)
Construindo uma API
RESTful com Java e Spring
Framework — Parte 2
(https://bit.ly/2RBwAd8)
Uncle Bob’s blogs:
https://sites.google.com/sit
e/unclebobconsultingllc/bl
ogs-by-robert-
martin/dependency-
injection-inversion
https://docs.spring.io/sprin
g/docs/5.2.5.RELEASE/spri
ng-framework-reference/
Referências sobre o tema
Spring Boot vs Micronaut vs
Quarkus:
Novidades do Spring:
https://spring.io/blog
Exemplos de código:
https://github.com/mariaze
vedo88/spring-framework-
examples
Quem compartilha
conteúdo legal (Twitter):
Baeldung: @baeldung
Josh Long: @starbuxman
https://objectcomputing.co
m/news/2020/04/07/micron
aut-vs-quarkus-vs-spring-
boot-performance-jdk-14
https://www.infoq.com/pres
entations/spring-framework-
boot-performance-
improvements/
Contatos
◦ Github
◦ https://github.com/mariazevedo88/
◦ Twitter
◦ https://twitter.com/mari_azevedo
◦ Medium
◦ https://medium.com/@mari_azevedo
◦ E-mail
◦ mariana@bsi.ufla.br
Obrigada!

Spring: Overview do framework mais popular para desenvolvimento em Java

  • 1.
    SPRING Overview do frameworkmais popular para desenvolvimento em Java Mariana Azevedo
  • 2.
    Sumário ◦ Por quecriaram o Spring? ◦ Conceitos essenciais ◦ Spring Framework ◦ Spring Projects – overview ◦ Spring Boot ◦ Spring Data ◦ Spring MVC ◦ Roadmap – atualidade
  • 3.
    Por que criaram oSpring? • Java: linguagem multi- Plataforma que ganhou força na guerra dos browsers em 95. • Conceito de J2EE/Java EE: surgiu somente no Java 1.2. • EJB Java EE: framework robusto com várias APIs – JTA, JPA, RMI…
  • 4.
    Por que criaramo Spring? ◦ Rod Johnson ◦ Crítica ao padrão arquitetural de desenvolvimento da Sun Microsystems (EJB). ◦ Expert One-To-One J2EE Design and Development, lançado em 2002. ◦ Criação do Spring: Expert One-To- One J2EE Development Without EJB do Rod Johnson (2004).
  • 5.
    Por que criaram oSpring? • Arquitetura: Lógica + Servidor de aplicação - controle transactional, Plataforma de persistência (Entity Beans) pooling de threads, mensageria, etc... Exemplo: Websphere (IBM), JBossESB. • Problema: acoplamento e complexidade. Ainda tinha recursos básicos: generics, annotations, autoboxing, etc…
  • 6.
    Conceitos essenciais Não precisade um servidor de aplicação para funcionar, fazendo uso apenas da JVM (para qualquer solução, não só as corporativas); Utilizar apenas aquilo que é necessário para o projeto: agregar somente os componentes necessários. Isso torna a arquitetura mais leve, fácil de compreender, manter e evoluir; Baseado no conceito de injeção de dependências, que é uma especialização da inversão de controle.
  • 7.
    Conceitos essenciais –IoC ◦ IoC: delegar para outro elemento o controle sobre como e quando um objeto deve ser criado e quando um método deve ser executado. ◦ Constructor Injection ◦ Getter/Setter Injection ◦ Interface Injection ◦ Service Locator ◦ IoC Container ◦ Gerenciar a injeção automática de dependência em toda aplicação. ◦ Onde fica? Spring Core Container
  • 8.
    Conceitos essenciais –DI ◦ DI: a classe deixa de se preocupar em como resolver as suas dependências. ◦ DI é uma maneira de implementar o IoC ◦ Não precisamos utilizar o new para criar os objetos por ele gerenciados ◦ DIP: Depend on abstractions, not on concretions ◦ Robert Martin – Clean Code ◦ SOLID principles ◦ Design Pattern
  • 9.
  • 10.
  • 11.
  • 12.
    Spring Framework Servlet API(JSR 340) WebSocket API (JSR 356) Concurrency Utilities (JSR 236) JSON Binding API (JSR 367) Bean Validation (JSR 303) JPA (JSR 338) JMS (JSR 914) Dependency Injection (JSR 330) Common Annotations (JSR 250) Configurações de JTA / JCA para coordenação de transações, se necessário.
  • 13.
  • 14.
    Spring Framework É onde seencontram as classes básicas para implementação do Beans Conteúdo • Gerenciamento dos classloaders • Reflexão • Tratamento de recursos • Strings
  • 15.
    Spring Framework É um objetoque é instanciado, montado e gerenciado por um contêiner Spring IoC. Escopos • Singleton: o container cria uma única instância desse bean; • Prototype: retorna uma instância diferente toda vez que for solicitada do container; • Request: cria um proxy a ser injetado e instancia o bean de destino quando for necessário no request; • Session: o mesmo do Request, mas mantém o mesmo bean em uma sessão; • Application: cria a instância do bean para o ciclo de vida de um ServletContext; • Websocket: o mesmo comportamento do Session, mas dentro do context do WebSocket.
  • 16.
    Spring Framework Inicializado pelo container Método deinit executado (se existir) Bean é utilizado Método de destroy executado Bean destruído
  • 17.
    Spring Framework Responsável por instanciar,configurar e montar os beans (configuração de XML, anotações Java e/ou código Java nos arquivos de configuração). Tipos •BeanFactory: somente em Applets e dispositivos móveis. É usado raramente e seu uso é desencorajado pela equipe Spring. •ApplicationContext: também funciona como um factory e suas implementações adicionam algumas funcionalidades extras De forma geral, é quem gerencia o ciclo de vida de um bean. Exemplos: AnnotationConfigApplicationContext, AnnotationConfigWebApplicationContext. •ApplicationEvent: manipula eventos do ApplicationContext, necessários para carregar os beans. Exemplo: ContextStartedEvent, ContextStoppedEvent.
  • 18.
    Spring Framework Responsável por instanciar,configurar e montar os beans (configuração de XML, anotações Java e/ou código Java nos arquivos de configuração). Tipos •BeanFactory: somente em Applets e dispositivos móveis. É usado raramente e seu uso é desencorajado pela equipe Spring. •ApplicationContext: também funciona como um factory e suas implementações adicionam algumas funcionalidades extras De forma geral, é quem gerencia o ciclo de vida de um bean. Exemplos: AnnotationConfigApplicationContext, AnnotationConfigWebApplicationContext. •ApplicationEvent: manipula eventos do ApplicationContext, necessários para carregar os beans. Exemplo: ContextStartedEvent, ContextStoppedEvent.
  • 19.
    Spring Framework É a SpringExpression Language, baseada no EL do JSP, criada para definir valores e comportamentos para os beans Exemplos • @Value(“{profile.level}”) private String level; • @Value(“8”) private int departments;
  • 20.
    Spring Projects -overview Spring Boot Spring Data Spring Cloud
  • 21.
    Spring Projects -overview Spring Security Spring RESTDocs Spring Batch
  • 22.
    Spring Projects -overview Spring Cloud Data Flow Spring Session Spring Integration Spring HATEOAS Spring AMQP Spring for Android Spring CredHub Spring Flo Spring for Apache Kafka Spring LDAP Spring Mobile Spring Roo Spring Shell Spring Statemachine Spring Vault Spring Web Flow Spring Web Services Spring MVC
  • 23.
    Spring Boot Permite criaruma aplicação Spring de maneira eficiente e eficaz, além de facilmente colocá-la em funcionamento (não depende de um servidor de aplicação).
  • 24.
  • 25.
  • 26.
    Spring Data Tem comoproposta de unificar e facilitar o acesso a diferentes tecnologias de armazenamento de dados, como bancos de dados relacionais e os NoSQL.
  • 27.
  • 28.
    Spring MVC É aestrutura Web original criada na Servlet API do Spring Framework. Possui as funcionalidades necessárias para criar uma aplicação web: módulo HTTP (request/response), delegação de responsabilidades e implementação do padrão MVC.
  • 29.
  • 30.
    Roadmap – evoluçãodo projeto Java EE e Spring – as críticas de 2004 foram fundamentais para evolução de ambos projetos. Em 2009, foi vendido para a VMWare. Hoje é mantido pela Pivotal (também da VMWare) Vários novos projetos foram criados para atender a mercado: Kafka, ElasticSearch, Serveless, etc... A partir do Spring Framework 5 – baseline é o Java 8 (mas suporta versões mais novas)
  • 31.
    Roadmap – evoluçãodo projeto A grande novidade do Spring Framework 5: programação reativa Projeto Spring WebFlux Projeto Spring Data R2DBC Spring Graal Native 0.6.0 – lançado em Abril de 2020
  • 32.
    Roadmap – evoluçãodo projeto Spring Boot 2.3.0.M4 (Abril 2020) Spring Boot 2.3 já é compatível com Java 14 (Abril 2020) Projeto Spring Authorization Server
  • 33.
    Roadmap – evolução do projeto Novabriga • Spring Boot • Micronauts • Quarkus • Microprofile Motivo: performance
  • 34.
    Referências sobre otema Documentação oficial: Artigos sobre SOLID: Princípios S.O.L.I.D: o que são e porque projetos devem utilizá-los (https://bit.ly/2V6NWRg) S.O.L.I.D principles: what are they and why projects should use them (https://bit.ly/2K5G78f) RESTful APIs com Java e Spring Framework: Construindo uma API RESTful com Java e Spring Framework — Parte 1 (https://bit.ly/34zCEs0) Construindo uma API RESTful com Java e Spring Framework — Parte 2 (https://bit.ly/2RBwAd8) Uncle Bob’s blogs: https://sites.google.com/sit e/unclebobconsultingllc/bl ogs-by-robert- martin/dependency- injection-inversion https://docs.spring.io/sprin g/docs/5.2.5.RELEASE/spri ng-framework-reference/
  • 35.
    Referências sobre otema Spring Boot vs Micronaut vs Quarkus: Novidades do Spring: https://spring.io/blog Exemplos de código: https://github.com/mariaze vedo88/spring-framework- examples Quem compartilha conteúdo legal (Twitter): Baeldung: @baeldung Josh Long: @starbuxman https://objectcomputing.co m/news/2020/04/07/micron aut-vs-quarkus-vs-spring- boot-performance-jdk-14 https://www.infoq.com/pres entations/spring-framework- boot-performance- improvements/
  • 36.
    Contatos ◦ Github ◦ https://github.com/mariazevedo88/ ◦Twitter ◦ https://twitter.com/mari_azevedo ◦ Medium ◦ https://medium.com/@mari_azevedo ◦ E-mail ◦ mariana@bsi.ufla.br
  • 37.