Pesquisa de site

Uma introdução ao framework Spring


Coloque um pouco de Spring em seu caminho e aprenda como construir aplicativos com esta estrutura poderosa.

Spring é um framework Java que usa um contêiner para criar e gerenciar os diferentes componentes de uma aplicação. O contêiner (geralmente chamado de contexto de aplicativo Spring) conecta os diferentes componentes em um aplicativo usando o padrão de design de injeção de dependência (DI). DI permite usar um objeto em uma classe dependente, sem criar uma nova instância dele dentro da classe dependente.

Portanto, em vez de permitir que cada componente crie novas instâncias daqueles dos quais eles dependem, o contêiner do Spring cria e mantém uma instância de cada um dos componentes que hospeda. Este contêiner então injeta uma instância de um componente em todos os outros componentes que precisam dele.

Explorando os principais recursos do Spring

A estrutura Spring possui cerca de 20 módulos bem organizados que desempenham um papel fundamental na capacidade de criar e gerenciar aplicativos. Com base nos recursos principais desses módulos, você pode agrupá-los em cinco categorias:

  • Contêiner principal
  • Acesso/Integração de Dados
  • Rede
  • Programação e Instrumentação Orientada a Aspectos
  • Teste

Recipiente Primavera

Spring usa um contêiner para criar e gerenciar diferentes componentes (que chama de beans) de um aplicativo. O contêiner é acessível por meio da interface ApplicationContext do Spring, que permite instanciar, configurar e montar objetos (ou beans). O contêiner do Spring pode desempenhar sua função devido ao auxílio de metadados de configuração.

Esses metadados de configuração podem ter vários formatos diferentes, mas seu formato típico é XML. Além dos beans, o contêiner do Spring também consiste em um núcleo, um contexto e um módulo de expressão.

Acesso/integração de dados Spring

O aspecto de acesso/integração de dados da estrutura Spring consiste em vários submódulos: JDBC, ORM, OXM, JMS e transação. Esses módulos trabalham juntos para gerenciar todos os dados que seu aplicativo usa.

Primavera Web

O recurso web do aplicativo Spring fornece integração orientada à web para seu aplicativo. Além da integração orientada à web, o Spring fornece um módulo de servlet da web. O módulo servlet da web é responsável pela implementação do model-view-controller (MVC) do Spring.

Programação Orientada a Aspectos Spring (AOP)

A estrutura AOP do Spring é outro de seus componentes principais. Embora a estrutura AOP não seja crucial para a função do contêiner do Spring, ela complementa o contêiner por ser uma solução de middleware capaz. Um dos principais recursos da estrutura AOP é que ela fornece serviços empresariais declarativos para sua aplicação, ou seja, gerenciamento de transações de declaração.

O gerenciamento declarativo de transações é uma abordagem desejável para o desenvolvimento de software porque tem impacto mínimo no código da aplicação.

Teste de Primavera

Spring dá importância significativa aos testes de aplicativos. Seu módulo de teste oferece suporte a testes de integração e testes unitários usando JUnit ou TestNG.

Criando um aplicativo Spring

Existem várias maneiras de criar o padrão para um novo aplicativo Spring. As várias abordagens incluem:

  • Do aplicativo web (ou Spring Initializr) no site oficial do Spring.
  • Criar manualmente uma estrutura de diretórios de projeto e especificações de construção.
  • Com o conjunto de ferramentas Spring.
  • Na linha de comando com interface de linha de comando Spring Boot.
  • Com o IDE Eclipse.
  • Com o IDE IntelliJ IDEA.

A abordagem mais popular é o Spring Initializr:

Como você pode ver na imagem acima, você terá várias decisões a tomar. O primeiro é o tipo de projeto que você deseja inicializar. Spring oferece três opções: Gradle para Groovy, Gradle para Kotlin ou Maven. Este aplicativo de exemplo usará um projeto Maven.

As outras opções que você deve selecionar são o idioma (Java), a versão do Spring Boot que deseja usar e os metadados do projeto. O Spring já possui alguns dados fictícios em seus cinco campos que o ajudarão a criar um aplicativo de exemplo. No entanto, você precisará atualizar esses campos com dados específicos do projeto, pois esses metadados descreverão seu aplicativo Spring, incluindo beans Spring e seus métodos.

Em seguida, você precisará selecionar o pacote em que deseja colocar seus arquivos (jar ou war). Em seguida, você pode selecionar a versão do Java que possui no seu dispositivo. A decisão final que você precisará tomar é o tipo de dependências que deseja para seu aplicativo.

Spring fornece várias dependências que você pode usar para adicionar propriedades ao seu aplicativo. Para adicionar uma nova dependência ao seu aplicativo, basta clicar no botão adicionar dependências à direita do Spring Initializr. Esta ação irá gerar a seguinte sobreposição em sua tela:

Para este aplicativo de exemplo, a única dependência necessária é Spring Web. Essa dependência permite construir aplicações web usando a arquitetura MVC. Depois de selecionar todas as dependências que deseja usar em seu aplicativo, clique em gerar. Isso fará o download do modelo do projeto para você.

Agora você tem um projeto Spring Boot (que é uma das bibliotecas do Spring). A etapa final é importar o projeto para o IDE de sua preferência. Seu projeto Spring terá a seguinte estrutura de projeto:

Esta é uma estrutura normal de projeto Maven e há vários arquivos importantes com os quais você precisa se familiarizar.

  • Pom.xml: contém os dados de configuração do aplicativo Spring.
  • OnlineShopaholicsApplication.java: Esta é a classe principal do Spring Boot, que executa a aplicação.
  • OnlineShopaholicsApplicationTest.java: esta é uma classe de teste JUnit que garante que o contexto do aplicativo Spring (ou contêiner) seja carregado corretamente.

Executando um aplicativo Spring

A classe bootstrap do Spring, que neste caso é a classe OnlineShopaholicsApplication, possui o seguinte código inicial:

package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OnlineShopaholicsApplication {
    public static void main(String[] args) {
        SpringApplication.run(OnlineShopaholicsApplication.class, args);
    }
}

Um dos aspectos mais importantes do código acima é a anotação @SpringBootApplication, que é uma anotação composta que permite que seu aplicativo acesse os recursos de três outras anotações:

  • @EnableAutoconfiguration: esta anotação permite a configuração automática do Spring Boot. Isso significa que ele diz ao Spring boot para configurar qualquer componente que ele acha que seu aplicativo precisará para funcionar.
  • @ComponentScan: Esta anotação permite ativar a verificação de componentes. Este recurso é importante, pois permite que o Spring descubra e registre automaticamente outros componentes anotados para uso pelo contexto do aplicativo Spring (ou contêiner).
  • @SpringBootConfiguration: Esta é uma forma especializada da anotação @Configureation, que permite registrar beans (ou objetos) no contexto do aplicativo Spring.

O outro aspecto importante do código acima é o método main(), ele executa sua aplicação. Quando o aplicativo é executado agora, ele simplesmente inicia o servidor. Portanto, se quiser adicionar mais funcionalidades ao aplicativo, você precisará atualizar o código:

package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class OnlineShopaholicsApplication {
    public static void main(String[] args) {
        SpringApplication.run(OnlineShopaholicsApplication.class, args);
    }
    @GetMapping("/customer")
    public String Welcome(@RequestParam(value = "name", defaultValue = "Customer") String name) {
        return String.format("Welcome %s!", name);
    }
}

O aplicativo Spring Boot agora possui três novas anotações:

  • @RestController: Esta anotação marca a classe como um controlador, portanto, cada método na classe acima (exceto main()) retornará um objeto de domínio em vez de uma visualização.
  • @GetMapping: esta anotação mapeia solicitações HTTP GET em métodos de cabeçalho específicos. Portanto, cada vez que você criar uma solicitação para “/cliente” no navegador, o método Welcome() tratará a solicitação retornando um valor de string.
  • @RequestParam: Esta anotação indica que um parâmetro de método deve ser vinculado a um parâmetro de solicitação da web.

Com o código atualizado, seu Spring OnlineShopaholicsApplication agora tem uma página do cliente que você pode visualizar em seu navegador. A execução do aplicativo iniciará o servidor e produzirá saída no console.

Há muitas informações importantes na saída. Ele informa que o servidor está em execução, quanto tempo demorou o processo de inicialização e em qual porta o aplicativo está sendo executado (8080, por padrão). Portanto, se você navegar para http://localhost:8080/customer você verá a seguinte saída em seu navegador:

Agora você pode projetar a visualização do seu aplicativo

Outro arquivo importante na estrutura do projeto que você pode notar é a pasta templates. Idealmente, a classe OnlineShopaholicsApplication deve servir como um controlador, que lida com solicitações para diferentes visualizações. Portanto, em uma aplicação completa, a classe do controlador não deve conter o texto que será exibido na view da sua requisição.

Em vez disso, você precisará criar arquivos de modelo usando HTML e colocá-los na pasta de modelos do seu aplicativo Spring.

Artigos relacionados: