Atualmente, a quantidade de ferramentas à disposição dos desenvolvedores é enorme, entretanto, nem sempre consegue-se fazer uso efetivo das mesmas, especialmente quando se trata de integrar diferentes soluções para o mesmo propósito.
Nesse artigo, será mostrado como a utilização de diferentes ferramentas e conceitos em conjunto pode melhorar tanto o ambiente de desenvolvimento quanto a produtividade.
Para isso, será mostrado como criar uma API REST para acesso e manipulação de dados que, com o uso do Spring Boot, torna o ambiente de execução mais rápido e facilmente replicado em diferentes máquinas para quantos desenvolvedores forem necessários.
Além disso, o Spring Data será utilizado em conjunto com o MongoDB para facilitar a criação da API REST e proporcionar um ambiente livre de queries em SQL e de schemas de banco de dados, graças às características não relacionais do MongoDB.
A produtividade no desenvolvimento de software sempre foi motivo de preocupação e motivação para constantes pesquisas sobre como melhorar o rendimento por meio de ambientes tecnológicos, técnicas e frameworks de desenvolvimento.
Devido a essas preocupações, a evolução dos frameworks e ferramentas de auxílio à programação de softwares tornaram-se constantes, tanto em relação à tecnologia, como a linguagem e a plataforma de desenvolvimento, quanto a técnicas e conceitos de programação, como orientação a objetos, orientação a serviços, etc.
O número de ferramentas cujo objetivo é aumentar a produtividade do desenvolvedor é enorme e este, por si só, pode melhorar ainda mais seu desempenho por meio da combinação de diversas técnicas e soluções disponíveis.
Com base nisso, o objetivo deste artigo é mostrar uma abordagem bastante produtiva ao lidar com o acesso a dados e configuração de ambiente.
A ideia é criar uma API REST de acesso a dados que dispense a necessidade de programar classes DAO ou escrever comandos em SQL utilizando a abordagem de “convenção ao invés de configuração”, bastando definir uma interface para que as classes concretas e os comandos SQL sejam gerados em tempo de execução.
A princípio, ao se pensar em uma API REST para acesso a dados, a arquitetura que vem à cabeça seria a de uma aplicação que segue o padrão MVC, roda em um container configurado exclusivamente para a aplicação e conta com uma camada de acesso a dados que implementa o padrão DAO repleta de classes de mapeamento objeto-relacional e comandos SQL.
Entretanto, é possível ter uma aplicação deste tipo de forma rápida e, o mais importante, implementada de uma maneira que torne a evolução muito produtiva, sem a necessidade de implementar classes concretas, comandos SQL, configurar servidores ou configurar URLs para o padrão REST.
Nesse artigo, serão apresentados uma arquitetura e um ambiente de desenvolvimento que possibilitam, juntos, um elevado nível de produtividade com a união do Spring Data, Spring Boot e MongoDB, cada qual sendo responsável por eliminar tarefas mais complexas e improdutivas do desenvolvimento de aplicações.
Spring Framework
O Spring se tornou, ao longo dos últimos anos, uma plataforma de desenvolvimento de aplicações Java que conta com uma série de ferramentas para as mais diversas situações. No caso deste artigo, a solução empregada faz uso de duas ferramentas provenientes desta plataforma: Spring Boot e Spring Data. Os próximos tópicos detalharão o que essas ferramentas fazem e como foram utilizadas na arquitetura da aplicação criada.
Spring Boot
O Spring Boot é uma solução que torna mais fácil a criação de aplicações stand-alone, deixando o maçante trabalho de configuração por conta da própria ferramenta. Graças às características desta ferramenta, é possível a criação de aplicativos Java que podem ser iniciados usando o comando java -jar ou mesmo aplicações web tradicionais com WAR.
É importante frisar que ele não é uma ferramenta de geração automática de código. Pelo contrário, é, essencialmente, um plugin para o seu sistema de compilação (Maven, Gradle, entre outros).
O principal benefício do Spring Boot é a criação de recursos com base no que ele encontra no classpath. Se o pom.xml do projeto inclui dependências de um driver MySQL, por exemplo, então o Spring Boot irá criar uma unidade de persistência baseada em MySQL. Se for adicionada uma dependência web, então o projeto passa a seguir os padrões do Spring MVC.
Se ...