O artigo mostra a importância das ferramentas da Spring Source através da primeira parte de um tutorial, que tem como objetivo construir uma aplicação web completa. Tudo isso de forma simples, rápida, com qualidade e usando apenas frameworks Spring.
Em que situação o tema é útil:
A utilização de diversas tecnologias de uma mesma empresa traz como principal benefício a possibilidade de integrá-las sem traumas. Além disso, não é qualquer framework que alia produtividade, desempenho e boas práticas, como é o caso do Spring Roo, que, em conjunto com os outros projetos da Spring Source, traz “super poderes” para os desenvolvedores.
Resumo DevMan:
O desenvolvimento de aplicações Java para web é uma tarefa complexa que costuma envolver um grande número de frameworks com o objetivo de aumentar a qualidade do produto final. Neste contexto, a Spring Source é uma empresa que possui mais de 20 projetos para facilitar a vida do desenvolvedor. Podemos combinar suas principais tecnologias para resolver grande parte das necessidades dos sistemas. Com isso, a fim de demonstrar o que é possível fazer, este artigo apresenta a primeira parte da construção de um site de compras coletivas utilizando os frameworks Spring Core, Spring Roo, Spring Data e Spring Security.
A escolha de tecnologias para a construção de aplicações nunca foi uma tarefa trivial. São diversos os fatores, ligados aos requisitos não funcionais do sistema e aos interesses dos stakeholders, que devem ser levados em consideração. Entre eles, existem alguns que são sempre desejáveis, como: modularidade, onde o software é organizado em componentes coesos e fracamente acoplados; desempenho, permitindo respostas rápidas às requisições; segurança, garantindo a autenticação e autorização dos usuários; e testabilidade, possibilitando testar facilmente o software. A escolha ainda tem que garantir características relacionadas às metas de negócio, como por exemplo, tempo para chegar ao mercado (time to market) e custo-benefício.
No mercado, atualmente, existem muitos frameworks que ajudam a alcançar estes objetivos de projeto. Entretanto, são poucas as tecnologias que contemplam em uma única estrutura grande parte das características desejadas. Este é o caso do framework Spring, uma opção open source que auxilia os desenvolvedores na construção de aplicações com qualidade e produtividade. Além do mais, usando apenas as ferramentas da Spring Source, você não precisa se preocupar com a integração de vários frameworks de fornecedores diferentes, reduzindo assim os riscos envolvidos.
A Spring Source mantém um conjunto de projetos que podem ser combinados para atender as necessidades específicas das aplicações. Entre as opções disponíveis, estão soluções para: gerenciar componentes, criar e manipular web services, trabalhar com transações, cuidar da segurança, comunicação remota, acesso a dados, programação orientada a aspectos (AOP), manipular informações de provedores de Software as a Service (SaaS), entre diversas outras possibilidades. Algumas soluções fazem parte do principal projeto da empresa, o Spring Core. Entre suas funções, está prover um container de Inversão de Controle (IoC), que fornece configuração centralizada e automatizada para os componentes Java. Este container traz vantagens para as aplicações como modularidade e testabilidade.
A Java Magazine reconhece a importância do arsenal tecnológico da Spring Source e, com isso, está sempre publicando artigos com seus últimos avanços (Edições 93, 88, 87, 84, 81, 80, 79, 78, 77, 74 e 73), assim como sua integração com outros frameworks (Edições 95, 92 e 83). Esta edição traz a primeira parte de um tutorial com o objetivo de mostrar o potencial e a produtividade dos frameworks da empresa através da construção de um site de compras coletivas. De forma complementar, buscaremos ainda contemplar as características de qualidade discutidas anteriormente.
Deste modo, nessa etapa discutiremos os projetos do Spring que serão utilizados em nossa aplicação, como é o caso do Spring Core, Spring Data, Spring Roo e Spring Security. Em seguida, iniciaremos a construção do site, apresentando o escopo, a modelagem conceitual estrutural e a arquitetura. Por fim, começaremos o passo-a-passo detalhado do desenvolvimento que será finalizado na segunda parte do artigo.
Ferramentas da família Spring
Nesta seção discutiremos os aspectos relevantes dos frameworks considerados na construção do site. Além disso, entenderemos de que maneira eles podem aumentar a qualidade das aplicações. Como não serão contempladas as mais de 20 tecnologias da Spring Source, vale a pena o leitor conhecer melhor os outros projetos (veja na seção Links o endereço para eles).
Spring Core
O Spring Core, ou Spring framework, como costuma ser chamado, é o projeto mais conhecido da Spring Source, com grande importância por ser uma dependência para todos os demais projetos da empresa. Seu objetivo principal é gerenciar os objetos de negócio das aplicações através do uso de POJOs. Ele também oferece um container que implementa o padrão de projeto Inversão de Controle (IoC). Este padrão diminui o acoplamento dos componentes do sistema e facilita a realização de testes. Com isso, ao utilizar o framework, seus projetos são beneficiados com duas características de qualidade desejáveis, a modularidade (com a diminuição do acoplamento) e a testabilidade.
O Spring framework possui ainda diversos módulos para: gerenciamento de transações, abstração de acesso a dados, programação orientada a aspectos (AOP) e desenvolvimento web, sendo os dois últimos empregados no site de compras coletivas e descritos a seguir.
AOP é um paradigma que permite aos desenvolvedores separar os interesses comuns do sistema com o objetivo de remover comportamentos que ocorrem em diversas classes e que não se encaixam naturalmente dentro delas. Para resolver este problema, este paradigma introduz o conceito de aspectos, os quais são responsáveis por encapsular os comportamentos que afetam estas classes. O módulo AOP que o Spring oferece é capaz de gerenciar transações declarativas, auxiliando na abstração de transação do Spring framework. Ele ainda permite o uso de aspectos personalizados para a resolução de problemas específicos. No caso deste artigo, AOP será utilizada pelo framework Roo (descrito nesta seção) para separar em arquivos distintos códigos mantidos pelo Roo das classes Java.
Quando falamos em desenvolvimento web com Spring, podemos contar com o apoio do módulo Spring Web MVC. Este framework possui integração com o container IoC do Spring Core, permitindo a construção de aplicações web com baixo acoplamento. Suas annotations trazem flexibilidade e produtividade para a definição de controllers e configurações. Além disso, ele também fornece a infraestrutura necessária para a criação de web services REST. No site de compras coletivas, este módulo permitirá a utilização do padrão arquitetural MVC na camada de apresentação, com a intenção de separar as responsabilidades, apoiar o controle e simplificar a comunicação com a camada de serviços.
Spring Data
Nos últimos anos, houve o surgimento de um grande número de soluções de bancos de dados não relacionais, os chamados NoSQL (Not only SQL). Esta nova onda ganhou força no mercado por resolver problemas como escalabilidade de uma forma simples. Com esta novidade, a Spring Source percebeu uma nova oportunidade de negócio, e criou o Spring Data, um projeto com o objetivo de tornar mais fácil a integração de aplicações Spring a estes novos modelos de bancos de dados, aproveitando ainda para melhorar o suporte aos bancos de dados relacionais. Podemos também chamá-lo de projeto “guarda-chuva”, pois está organizado em vários subprojetos específicos, como é o caso do MongoDB, Neo4J, Redis e JPA.
No site de compras coletivas adotaremos o subprojeto JPA para armazenar as informações das entidades da aplicação (discutidas na seção “Modelagem Conceitual do Sistema”). A escolha deste subprojeto, ao invés do suporte de acesso a dados disponível no Spring Core, possui bons motivos. O primeiro diz respeito às vantagens que o Spring Data traz, sendo a mais relevante a redução dos códigos necessários para implementação do acesso a dados através do conceito de repositório de dados. Um repositório disponibiliza todos os métodos de um CRUD com apoio da interface JpaRepository, além do mais, outras funções complexas de manipulação de dados podem ser desenvolvidas normalmente. O projeto ainda fornece vantagens como: suporte ao QueryDSL (semelhante a API Criteria do JPA), auditoria transparente das classes de domínio e suporte a paginação. Outro bom motivo para utilizá-lo é que provavelmente a Spring Source reduzirá o apoio ao módulo de acesso a dados disponível no Spring Core para focar apenas no Spring Data.
Com o subprojeto JPA as aplicações ganham uma maneira eficiente e produtiva de garantir o acesso às informações.
Spring Roo
Sabemos que desenvolver aplicações web com Java não é uma tarefa simples. A equipe está sempre sujeita a codificar um grande número de configurações e classes que não dizem respeito à lógica de negócio. A Spring Source reconhece esta complexidade, e pensando nisso, lançou o Spring Roo, uma ferramenta que permite a construção rápida de aplicações Java. Este projeto torna possível um desenvolvimento com boas práticas, alta qualidade e desempenho, deixando o programador se preocupar apenas com questões específicas de cada sistema.
O Spring Roo funciona através de um “shell”, onde podemos digitar comandos para criar projetos e gerar automaticamente grande parte do código e configurações básicas. Outra maneira de utilizá-lo é junto com IDEs como Eclipse e Spring Tool Suite.
A ferramenta faz uso da programação orientada a aspectos (AOP), disponível no Spring framework, para manter os códigos gerados em uma unidade de compilação diferente. Isso significa, na prática, que ele faz uso de Inter-Type Declaration (ITD) para criar arquivos no formato *_Roo_*.aj. Estes arquivos isolam atributos e métodos das classes Java que o Roo julga importante por ocorrerem com frequência. Alguns exemplos de atributos são: id e version, e de métodos são: getters, setters e o toString(). No momento da compilação do código, o AspectJ Compiler irá realizar um merge entre os arquivos .aj e os respectivos .java, produzindo os .class completos. A vantagem desta abordagem é que podemos trabalhar normalmente com as classes Java e não precisamos nos preocupar com os arquivos .aj (que não devem ser modificados). Além disso, os aspectos permitem um processo transparente, no qual não existem referências aos arquivos ITD dentro das classes Java.
Nós utilizamos o Spring Roo no site de compras coletivas para criação de todos os códigos e configurações básicas nos primeiros passos do desenvolvimento. O restante da codificação será feita na IDE Eclipse.
Com o apoio do Spring Roo, podemos garantir características como manutenibilidade e produtividade. Isto significa que você pode fazer alterações nas classes Java, como por exemplo, inserir um novo atributo, e a ferramenta irá alterar automaticamente os arquivos .aj para incluir os métodos get() e set() deste atributo. A produtividade fornecida pelo framework pode auxiliar a equipe de desenvolvimento a alcançar uma das metas de negócio, o tempo para chegar ao mercado (time-to-market). Com isso o produto pode ser entregue antecipadamente e/ou os requisitos funcionais e não funcionais serem validados previamente, permitindo mudanças antes da entrega e garantindo a satisfação do cliente. A ferramenta ainda gera códigos de qualidade que adotam boas práticas. Isso pode ser observado, por exemplo, na forma como o código é estruturado e na utilização adequada dos recursos do Spring framework.
Spring Security
Entre as várias questões relacionadas à qualidade dos sistemas, uma das principais preocupações está na garantia da segurança. Uma aplicação precisa proteger das pessoas mal intencionadas os dados e informações armazenados. Com este objetivo a Spring Source possui um projeto específico, denominado Spring Security, que busca resolver o problema lidando com dois elementos básicos de segurança, a autenticação e a autorização.
A autenticação é um processo de verificação para garantir que um usuário possa ter acesso à aplicação. No Spring Security ela pode ser realizada de várias maneiras. Uma forma simples é através da geração automática de um formulário de identificação. A ferramenta permite ainda muitas outras técnicas avançadas, que envolvem a integração com outras ferramentas e sistemas, como por exemplo, Kerberos e OpenID.
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.