close

Spring Framework

Ir para a navegação Ir para a pesquisa
Spring Framework
Spring Framework Logo 2018.svg
Informações gerais
tipo de programa estrutura para aplicativos móveis da web
desenvolvedor SpringSource
lançamento inicial 1º de outubro de 2002
Licença Licença Apache 2.0
Estado atual Ativo
Informação técnica
Programado em
Plataformas compatíveis Máquina Virtual JAVA
Versões
Última versão estável 5.1.6 (1 de abril de 2019 (3 ​​anos, 6 meses e 16 dias) [ 1 ] ​)
Links

Spring é uma inversão de código aberto de contêiner de controle e estrutura de desenvolvimento de aplicativos para a plataforma Java . [ 2 ]

A primeira versão foi escrita por Rod Johnson, que a lançou juntamente com a publicação de seu livro Expert One-on-One J2EE Design and Development (Wrox Press, outubro de 2002). A estrutura foi lançada inicialmente sob a licença Apache 2.0 em junho de 2003. A primeira versão principal foi a versão 1.0, que apareceu em março de 2004 e foi seguida por outros marcos em setembro de 2004 e março de 2005. A versão 1.2.6 Spring Framework ganhou Jolt Awards e Jax Innovation Awards em 2006. [ 3 ] [ 4 ]​ Spring Framework 2.0 foi lançado em 2006, versão 2.5 em novembro de 2007, Spring 3.0 em dezembro de 2009 e Spring 3.1 dois anos depois. [ 5 ] O início do desenvolvimento da versão 4.0 foi anunciado em janeiro de 2013. [ 6 ] A versão atual é 5.1.6. [ 1 ]

Embora os recursos fundamentais do Spring Framework possam ser utilizados em qualquer aplicação desenvolvida em Java, existem diversas extensões para construção de aplicações web na plataforma Java EE . Embora não imponha nenhum modelo de programação específico, esse framework se popularizou na comunidade por ser considerado um complemento ao modelo EJB ( Enterprise JavaBean ).

História

Os primeiros componentes do que se tornou o Spring Framework foram escritos por Rod Johnson em 2000, enquanto trabalhava como consultor independente para seus clientes no setor financeiro em Londres. Enquanto escrevia o livro Expert One-on-one J2EE Design And Development (programador para programador) , Rod estendeu seu código para encapsular sua visão de como aplicativos trabalhando com várias partes da plataforma J2EE poderiam se tornar mais simples e eficientes. e as empresas estavam usando na época.

Em 2001, os modelos de programação dominantes para aplicativos baseados na web foram oferecidos pela Java Servlet API e Enterprise JavaBeans , ambas especificações criadas pela Sun Microsystems em colaboração com outros fornecedores e partes interessadas que gozavam de grande popularidade na comunidade Java. Aplicativos que não eram baseados na Web, como aplicativos baseados em cliente ou aplicativos em lote , podiam ser escritos com base em ferramentas e projetos de código aberto ou comerciais que fornecessem os recursos necessários para esses desenvolvimentos.

Finalmente, após a publicação de seu livro em 2002, Rod Johnson apresentou pela primeira vez seu código para o framework Java Interface 21 que se tornaria a base do framework spring [ 7 ] . Uma pequena equipe de desenvolvedores foi formada esperando trabalhar na extensão do framework e um projeto foi criado no Sourceforge em fevereiro de 2003. Depois de trabalhar em seu desenvolvimento por mais de um ano eles lançaram uma primeira versão (versão 1.0) em março de 2004. Após este lançamento , o Spring ganhou muita popularidade na comunidade Java, em parte devido ao uso de Javadoc e documentação de referência acima da média para um projeto de código aberto.

No entanto, o Spring Framework também foi fortemente criticado em 2004 e ainda é objeto de acalorado debate. Na época de seu primeiro grande lançamento, muitos desenvolvedores e líderes de opinião viram o Spring como um grande avanço em relação ao modelo de programação tradicional; isso era especialmente verdadeiro para Enterprise JavaBeans. Um dos objetivos de design do Spring Framework é sua facilidade de integração com os padrões J2EE e ferramentas comerciais existentes. Isso elimina em parte a necessidade de definir suas características em um documento de especificação elaborado por um comitê oficial e que poderia ser criticado.

O Spring Framework fez com que técnicas desconhecidas pela maioria dos programadores se tornassem populares em um período de tempo muito curto. O exemplo mais notável é a inversão de controle . Em 2004, o Spring desfrutou de taxas de adoção extremamente altas e, ao oferecer sua própria estrutura de programação orientada a aspectos ( AOP ) , tornou seu paradigma de programação mais popular na comunidade Java. [ citação necessária ]

Em 2005, o Spring superou as taxas de adoção do ano anterior como resultado de novos lançamentos e mais recursos sendo adicionados. O fórum da comunidade formado em torno do Spring Framework (The Spring Forum) que começou no final de 2004 também ajudou a aumentar a popularidade do framework e desde então cresceu para se tornar a fonte mais importante de informações e ajuda para seus usuários.

Módulos

O Spring Framework é composto por vários módulos que fornecem uma gama de serviços:

  • Inversion of control wrapper – Permite a configuração de componentes da aplicação e gerenciamento do ciclo de vida de objetos Java, principalmente por meio de injeção de dependência .
  • Programação orientada a aspectos : Permite a implementação de rotinas de travessia.
  • Acesso a dados : trabalhando com RDBMS na plataforma Java, usando Java Database Connectivity e ferramentas de mapeamento de objetos relacionais com bancos de dados NoSQL .
  • Gerenciamento de transações : unifica diferentes APIs de gerenciamento e coordena transações para objetos Java.
  • Model view controller : Um framework baseado em HTTP e servlets , que fornece ferramentas para extensão e customização de aplicações web e serviços web RESTful .
  • Estrutura de acesso remoto : permite importação e exportação no estilo RPC de objetos Java em redes que suportam protocolos baseados em RMI , CORBA e HTTP , incluindo serviços da Web ( SOAP ).
  • Convenção sobre Configuração : o módulo Spring Roo oferece uma solução rápida para o desenvolvimento de aplicações baseadas no Spring Framework, privilegiando a simplicidade sem perder a flexibilidade.
  • Processamento em lote : Uma estrutura para processamento de alto volume que inclui funções de registro/rastreamento, manipulação de transações, estatísticas de processamento de tarefas, reinicialização de tarefas e gerenciamento de recursos.
  • Autenticação e autorização – processos de segurança configuráveis ​​que suportam uma variedade de padrões, protocolos, ferramentas e práticas por meio do subprojeto Spring Security (anteriormente Acegi).
  • Administração Remota : Visibilidade de configuração e gerenciamento de objetos Java para configuração local ou remota via JMX .
  • Mensagens : Registro configurável de objetos receptores de mensagens, para consumo transparente a partir do JMS , uma melhoria no envio de mensagens sobre APIs JMS padrão.
  • Testing : Suporte de classe para desenvolvimento de testes unitários e integração.

Inversão do container de controle

O coração do Spring Framework é seu contêiner de inversão de controle (IoC). Seu trabalho é instanciar, inicializar e conectar objetos de aplicativo, bem como fornecer vários recursos adicionais disponíveis no Spring durante toda a vida útil do objeto. [ 8 ]

Os objetos criados e gerenciados pelo container são chamados de objetos gerenciados ou beans . Esses objetos são do tipo POJO . Para realizar sua tarefa, o contêiner precisa de informações que indiquem como instanciar e conectar os beans entre si . Essas informações são chamadas de metadados de configuração. Existem diferentes maneiras de fornecer essas informações: baseado em XML, baseado em anotação ou baseado em objeto Java (desde o Spring 3.0). O contêiner é independente do formato de metadados de configuração. O usuário pode usar qualquer formato que desejar e até mesmo misturá-los no mesmo aplicativo. [ 8 ]

Os objetos podem ser obtidos por pesquisa de dependência ou por injeção de dependência . [ 9 ] ​pesquisa de dependência é um modelo onde o objeto contido é solicitado por um objeto com um nome específico ou de um tipo específico. A injeção de dependência é um modelo no qual o contêiner passa objetos por nome para outros objetos, seja por meio de métodos construtores, propriedades ou métodos de fábrica.

Em muitos casos, ao usar outras partes do Spring Framework, você não precisa usar o Wrapper, embora usá-lo provavelmente permitirá que você torne um aplicativo mais fácil de configurar e personalizar. O Spring Container fornece um mecanismo consistente para configurar seus aplicativos e se integra a quase todos os ambientes Java, desde pequenos aplicativos até grandes aplicativos corporativos.

O contêiner pode ser parcialmente convertido em um contêiner EJB 3.0 por meio do projeto Pitchfork . Alguns criticam o Spring Framework por não ser compatível com os padrões. [ 10 ] No entanto, SpringSource não vê a conformidade com EJB 3 como um objetivo importante, afirmando que o Spring Framework e o container permitem modelos de programação mais poderosos. [ 11 ]​ Você não cria um objeto, mas descreve como ele deve ser criado, definindo-o no arquivo de configuração do Spring. Você não chama os serviços e componentes, mas diz quais serviços e componentes devem ser chamados, definindo-os nos arquivos de configuração do Spring. Isso torna o código mais fácil de manter e mais fácil de testar usando a injeção de dependência (IoC).

Veja também

Notas e referências

  1. a b Spring Framework 5.1.6, 5.0.13 e 4.3.23 disponível agora
  2. Tour do recurso SpringSource
  3. Joltwinners 2006
  4. JAX Innovation Award Gewinner 2006
  5. SpringSource.org
  6. Próxima parada: Spring Framework 4.0. (em inglês) . Recuperado em 24 de setembro de 2019.
  7. "Spring: a estrutura para aplicativos Java complexos" . Guia Digital IONOS . Recuperado em 28 de junho de 2022 . 
  8. a b Início da primavera Arquivado em 19 de fevereiro de 2018, no Wayback Machine .. Capítulo 2. Mert Çalıskan e Kenan Sevindik Editor John Wiley & Sons, Inc. 2015
  9. Qual é a diferença entre a pesquisa de dependência e a injeção de dependência - Spring Forum . Forum.springsource.org (2009-10-28). Recuperado em 24/11/2013.
  10. Spring VS EJB3
  11. "PitchforkFAQ" . Recuperado em 6 de junho de 2006 .  

Bibliografia

  • Mak, Gary (1 de setembro de 2010). Spring Recipes: A Problem-Solution Approach (Segunda edição). Pressione . pág. 1104. ISBN  1-4302-2499-1 . 
  • Paredes, Craig (28 de novembro de 2010). Primavera em ação (terceira edição). Manning . pág. 700. ISBN  1-935182-35-8 . 
  • Paredes, Craig; Breidenbach, Ryan (16 de agosto de 2007). Primavera em Ação (Segunda edição). Manning . pág. 650 . ISBN  1-933988-13-4 . 
  • Johnson, Rod; Holler, Jürgen; Arendsen, Alef; Risberg, Thomas; Sampaleanu, Colin (8 de julho de 2005). Desenvolvimento Java Profissional com o Spring Framework (Primeira edição). Imprensa Wrox . pág. 672. ISBN  0-7645-7483-3 . Arquivado do original em 24 de novembro de 2010 . Recuperado em 18 de janeiro de 2013 . 
  • Harrop, Rob; Machacek, janeiro (31 de janeiro de 2005). Pro Primavera (primeira edição). Pressione . pág. 832 . ISBN  1-59059-461-4 . Arquivado do original em 18 de fevereiro de 2012 . Recuperado em 18 de janeiro de 2013 . 
  • Johnson, Rod; Jürgen, Höller (23 de outubro de 2002). Desenvolvimento J2EE sem EJB (Primeira edição). Imprensa Wrox . pág. 768 . ISBN  0-7645-5831-5 . 
  • Johnson, Rod (outubro de 2002). Expert One-on-one J2EE Design and Development (Primeira edição). Imprensa Wrox . pág. 750. ISBN  0-7645-4385-7 . 

Links externos