SlideShare uma empresa Scribd logo
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!

Mais conteúdo relacionado

Mais procurados

Spring Boot
Spring BootSpring Boot
Spring Boot
Jiayun Zhou
 
Spring Boot
Spring BootSpring Boot
Spring Boot
HongSeong Jeon
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Pei-Tang Huang
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
Jeevesh Pandey
 
Spring boot
Spring bootSpring boot
Spring boot
Pradeep Shanmugam
 
Spring Core
Spring CoreSpring Core
Spring Core
Pushan Bhattacharya
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
Jeevesh Pandey
 
Maven
MavenMaven
Spring boot
Spring bootSpring boot
Spring boot
Gyanendra Yadav
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
Rowell Belen
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
Rajiv Srivastava
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
Naphachara Rattanawilai
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
tola99
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Jaran Flaath
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Hùng Nguyễn Huy
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
Hamid Ghorbani
 
From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0
VMware Tanzu
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
07.pallav
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
Purbarun Chakrabarti
 

Mais procurados (20)

Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Maven
MavenMaven
Maven
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 
From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 

Semelhante a Spring: Overview do framework mais popular para desenvolvimento em Java

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
cejug
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
Alexsandro Oliveira
 
1409243945064
14092439450641409243945064
1409243945064
Fábio Junior
 
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
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
Miguel Vilaca
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
Jorge William Rodrigues
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
Rodrigo Cândido da Silva
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
Rafael Ponte
 
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
Leandro Costa
 
Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012
rogerlista
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
André Luiz Forchesatto
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
Introdução - Java WEB
Introdução - Java WEBIntrodução - Java WEB
Introdução - Java WEB
CodesHouse Treinamentos
 
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
Regis Machado
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
Wende Mendes
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
armeniocardoso
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
Rodrigo Cândido da Silva
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
Marcio Marinho
 
Java web
Java webJava web
Java web
marcosvpcortes
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
Renato Puccini
 

Semelhante a Spring: Overview do framework mais popular para desenvolvimento em Java (20)

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
1409243945064
14092439450641409243945064
1409243945064
 
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 ...
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
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
 
Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012Periódicos MundoJ e Java Magazine Fevereiro 2012
Periódicos MundoJ e Java Magazine Fevereiro 2012
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Introdução - Java WEB
Introdução - Java WEBIntrodução - Java WEB
Introdução - Java WEB
 
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
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Java web
Java webJava web
Java web
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 

Spring: Overview do framework mais popular para desenvolvimento em Java

  • 1. SPRING Overview do framework mais popular para desenvolvimento em Java Mariana Azevedo
  • 2. Sumário ◦ Por que criaram o Spring? ◦ Conceitos essenciais ◦ Spring Framework ◦ Spring Projects – overview ◦ Spring Boot ◦ Spring Data ◦ Spring MVC ◦ Roadmap – atualidade
  • 3. 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…
  • 4. 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).
  • 5. 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…
  • 6. 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.
  • 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
  • 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.
  • 14. 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
  • 15. 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.
  • 16. Spring Framework Inicializado pelo container Método de init 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 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;
  • 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 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).
  • 26. 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.
  • 28. 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.
  • 30. 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)
  • 31. 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
  • 32. 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
  • 33. Roadmap – evolução do projeto Nova briga • Spring Boot • Micronauts • Quarkus • Microprofile Motivo: performance
  • 34. 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/
  • 35. 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/
  • 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