Desenvolvimento de software, metodologia, tecnologia e nostalgia
In: Java
11 Jul 2010Ola,
Gostaria de apresentar à vocês o Spring Roo, uma ferramenta leve para desenvolvimento rápido de aplicações em java bem parecido com o jeito Rails de ser, porém gera código 100% Java.
As grandes vantagens de se utilizar o Roo é que podemos a qualquer momento abandoná-lo, não gera nenhuma dependência na ferramenta, gera todo o código massante e chato de escrever e ainda de quebra gera testes no selenium.
A seguir, vou mostrar como funciona a ferramenta, vamos gerar uma pequena aplicação e ver como tudo isso funciona.
Bom, o Roo tem como requisito o Maven, então, antes de mais nada instale-o.
Baixe também o Roo, descompacte e adicione a pasta bin ao seu PATH.
Com tudo instalado, podemos começar criando o nosso projeto.
Criamos o diretório de onde teremos os arquivos do nosso projeto.
mkdir contactAppExample cd contactAppExample roo
Faço a chamada da ferramenta com o comando roo, e a partir de agora, nós utilizaremos o console do Roo para adicionar recursos ao nosso projeto.
Uma dica interessante, é que a qualquer momento, podemos executar o comando hint que o Roo nos informa qual o proximo passo a ser realizado, além disso, a tecla TAB funciona para auto-complete dos comandos e argumentos facilitando bastante a digitação e agilizando todo o processo.
roo
Criaremos um novo projeto com o nome do pacote br.com.webstart.contacts e o projeto trerá o nome ContactsAppExample
roo> project --topLevelPackage br.com.webstart.contacts --projetName ContactsAppExample
Agora, vamos informar as configurações de banco de dados.
roo> persistence setup --provider HIBERNATE --databas MYSQL
Depois que criamos os outros itens do projeto, teremos que editar o arquivo database.properties para informarmos o nome do schema, usuário e senha para acesso ao banco de dados.
Com as definições de configuração básicas do nosso projeto definida, partiremos para a criação das entidades.
roo> entity --class ~.domain.Contact --testAutomatically
Repare que usei um “~.” antes do nome da classe, esse é um recurso que podemos usar no Roo para não termos que escrever todo o nome do pacote principal novamente. Então, adicionei o pacote domain as classes de entidades que criei.
Vamos supor que eu não lembre agora o que preciso fazer, executo então o comando hint e veja o que o Roo me informa.
roo> hint
You can add fields to your entities using either Roo or your IDE.
To add a new field, type ‘field’ and then hit TAB. Be sure to select
your entity and provide a legal Java field name. Use TAB to find an entity
name, and ‘~’ to refer to the top level package. Also remember to use TAB
to access each mandatory argument for the command.After completing the mandatory arguments, press SPACE, type ‘–’ and then TAB.
The optional arguments shown reflect official JSR 303 Validation constraints.
Feel free to use an optional argument, or delete ‘–’ and hit ENTER.If creating multiple fields, use the UP arrow to access command history.
After adding your fields, type ‘hint’ for the next suggestion.
To learn about setting up many-to-one fields, type ‘hint relationships’.
Então, prossigo criando agora os atributos da minha classe. Vou criar um atributo com nome e telefone, bem simples.
roo> field string contactName --notNull
Crio o campo numero.
field string --fieldName contactNumber --notNull
Precisamos agora criar os nossos controladores e estou definindo que as classes de controler ficarão dento do pacote. web
roo> controller all --package ~.web
Repare que na saida do console, a ferramenta cria o pom.xml com todas as dependências necessárias.
Created SRC_MAIN_JAVA/br/com/webstart/contacts/web Created SRC_MAIN_JAVA/br/com/webstart/contacts/web/ContactController.java Created SRC_MAIN_WEBAPP/WEB-INF/spring .... Managed ROOT/pom.xml [Added dependency javax.servlet:jstl:1.2] Managed ROOT/pom.xml [Added dependency javax.el:el-api:1.0] Managed ROOT/pom.xml [Added dependency joda-time:joda-time:1.6] Managed ROOT/pom.xml
Obs: Não coloquei a saida completa do console por ser muito extenso e não ser relevante para o artigo. =)
Nossa aplicação ja esta pronta, com todos os CRUDs gerados e com as suas telas basicas criadas, porém eu gostaria de incluir testes no meu sistema, o Roo cria testes do Selenium de uma forma bem simples.
roo> selenium test --controller ~.web.ContactController
A ferramenta, mais uma vez, gera os arquivos de testes e ja inclui no pom.xml as dependências necessárias automaticamente.
O Roo esta sendo desenvolvido em parceria com o Google e por esse motivo, ele oferece uma integração com o GWT, assim para incluirmos os recursos do GWT no nosso projeto, basta dar o seguinte comando ao Roo.
O codigo gerado incluir estilos e melhora experiência de navegação do usuário de uma forma bem descomplicada.
roo> gwt setup
Agora, peço pro Roo executar os testes de integração para certificar que tudo esta certo. Claro que como tudo foi gerado automaticamente, não encontraremos erros, porém no caso de uma edição manual, falas humanas ocorrem, e ai sim os testes fazem sentido. = )
roo> perform tests
Os passos seguintes são opcionais, utilizei para que eu tenha o projeto configurado para o eclipse. Para isso, executo o seguinte comando.
roo> perform eclipse
Pronto, agora a nossa aplicação de contatos esta pronta, configurada para usa-la no eclipse, por incrivel que pareça ! rs =)
Basta sairmos do console com o comando.
roo> quit
Bom, agora vamos rodar a aplicação, o Roo cria o projeto com um tomcat e jetty embutido, por isso a execução é feita pelo maven mesmo.
mvn tomcat:run
Agora, basta digitar no seu navegador http://localhost:8080/ContactAppExample e pronto !
Podemos a qualquer momento abandonar o uso do Roo, pois todas as anotações e códigos gerados são de simples entendimento e funcionam sem que tenhamos que adicionar nada dele ao projeto e qualquer pessoas poderá dar continuidade ao projeto sem o uso dele.
No próximo post, pretendo colocar como realizamos relacionamentos entre as entidades, mostrar o código gerado comentando sobre alguns pontos importantes dele e ainda disponibiliza-lo no Google App Engine.
Até ….
Olá,
Esse blog tem por objetivo trazer informações sobre desenvolvimento de software, tecnologia e tudo o que envolve o mundo dos programadores e analistas de sistemas.
Pretendo publicar aqui, informações que não acho tão facilmente na internet ou coisas que até encontramos, mas nunca foram colocadas de uma forma simplificada e de fácil entendimento.
follow:
3 Responses to Agora é divertido programar em Java com Spring Roo
Fernando Boaglio
July 22nd, 2010 at 09:43
Achei bem legal ele gerar os testes do Selenium.
Sergio Fantin
August 4th, 2010 at 12:22
Olá Eduardo,
parabéns pelo post.
Quando tiver um tempo vou rodar o exemplo. Parece que é bem simples pra criar CRUDs com o Spring Roo.
Abraços…
Karina Baccili
August 10th, 2010 at 10:33
Muito bom o post. Um jeito a la Rails de se programar em Java =D
Parabéns!