Spring Framework - Visão geral
Spring é a estrutura de desenvolvimento de aplicativos mais popular para Java empresarial. Milhões de desenvolvedores em todo o mundo usam o Spring Framework para criar código de alto desempenho, facilmente testável e reutilizável.
O Spring framework é uma plataforma Java de código aberto. Ele foi inicialmente escrito por Rod Johnson e foi lançado pela primeira vez sob a licença Apache 2.0 em junho de 2003.
A mola é leve quando se trata de tamanho e transparência. A versão básica do framework Spring tem cerca de 2 MB.
Os principais recursos do Spring Framework podem ser usados no desenvolvimento de qualquer aplicativo Java, mas existem extensões para a construção de aplicativos da web na plataforma Java EE. O Spring framework visa tornar o desenvolvimento J2EE mais fácil de usar e promove boas práticas de programação ao habilitar um modelo de programação baseado em POJO.
Benefícios de usar o Spring Framework
A seguir está uma lista de alguns dos grandes benefícios do uso do Spring Framework -
O Spring permite que os desenvolvedores desenvolvam aplicativos de classe corporativa usando POJOs. O benefício de usar apenas POJOs é que você não precisa de um produto de contêiner EJB, como um servidor de aplicativos, mas tem a opção de usar apenas um contêiner de servlet robusto, como Tomcat ou algum produto comercial.
A primavera é organizada de forma modular. Mesmo que o número de pacotes e classes seja substancial, você precisa se preocupar apenas com aqueles de que precisa e ignorar o resto.
O Spring não reinventa a roda, em vez disso, ele realmente faz uso de algumas das tecnologias existentes, como vários frameworks ORM, frameworks de registro, timers JEE, Quartz e JDK e outras tecnologias de visualização.
Testar um aplicativo escrito com Spring é simples porque o código dependente do ambiente é movido para esta estrutura. Além disso, usando POJOs JavaBeanstyle, fica mais fácil usar injeção de dependência para injetar dados de teste.
A estrutura da web do Spring é uma estrutura MVC da web bem projetada, que fornece uma ótima alternativa para estruturas da web, como Struts ou outras estruturas da web com engenharia excessiva ou menos populares.
O Spring fornece uma API conveniente para converter exceções específicas de tecnologia (lançadas por JDBC, Hibernate ou JDO, por exemplo) em exceções consistentes e não verificadas.
Os contêineres IoC leves tendem a ser leves, especialmente quando comparados aos contêineres EJB, por exemplo. Isso é benéfico para desenvolver e implantar aplicativos em computadores com memória e recursos de CPU limitados.
O Spring fornece uma interface de gerenciamento de transações consistente que pode ser reduzida para uma transação local (usando um único banco de dados, por exemplo) e expandida para transações globais (usando JTA, por exemplo).
Injeção de Dependência (DI)
A tecnologia com a qual o Spring é mais identificado é o Dependency Injection (DI)sabor de Inversão de Controle. oInversion of Control (IoC)é um conceito geral e pode ser expresso de muitas maneiras diferentes. A injeção de dependência é apenas um exemplo concreto de inversão de controle.
Ao escrever um aplicativo Java complexo, as classes do aplicativo devem ser o mais independentes possível de outras classes Java para aumentar a possibilidade de reutilizar essas classes e testá-las independentemente de outras classes durante o teste de unidade. A injeção de dependência ajuda a colar essas classes e, ao mesmo tempo, mantê-las independentes.
O que é injeção de dependência exatamente? Vamos examinar essas duas palavras separadamente. Aqui, a parte da dependência se traduz em uma associação entre duas classes. Por exemplo, a classe A é dependente da classe B. Agora, vamos examinar a segunda parte, injeção. Tudo isso significa que a classe B será injetada na classe A pelo IoC.
A injeção de dependência pode acontecer na forma de passar parâmetros para o construtor ou por pós-construção usando métodos setter. Como a injeção de dependência é o coração do Spring Framework, explicaremos esse conceito em um capítulo separado com um exemplo relevante.
Programação Orientada a Aspectos (AOP)
Um dos principais componentes do Spring é o Aspect Oriented Programming (AOP)estrutura. As funções que abrangem vários pontos de um aplicativo são chamadascross-cutting concernse essas questões transversais são conceitualmente separadas da lógica de negócios do aplicativo. Existem vários bons exemplos comuns de aspectos, incluindo registro, transações declarativas, segurança, armazenamento em cache, etc.
A principal unidade de modularidade em OOP é a classe, enquanto em AOP a unidade de modularidade é o aspecto. DI ajuda a desacoplar seus objetos de aplicação uns dos outros, enquanto AOP ajuda a desacoplar interesses transversais dos objetos que eles afetam.
O módulo AOP do Spring Framework fornece uma implementação de programação orientada a aspectos, permitindo que você defina interceptores de método e pontos de corte para desacoplar claramente o código que implementa a funcionalidade que deve ser separada. Discutiremos mais sobre os conceitos de Spring AOP em um capítulo separado.