Agora é divertido programar em Java com Spring Roo

In: Java

11 Jul 2010
Visualizações :5016

Ola,

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é ….

Related Posts Plugin for WordPress, Blogger...

3 Responses to Agora é divertido programar em Java com Spring Roo

Avatar

Fernando Boaglio

July 22nd, 2010 at 09:43

Achei bem legal ele gerar os testes do Selenium.

Avatar

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…

Avatar

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!

Comment Form

Sobre este blog

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.

Photostream

  • Eduardo Cerqueira: Douglas, Você possui algum tipo de acesso SSH na sua revenda ? Se possuir, pode usa-la para [...]
  • Douglas: olá eu criei uma conta na minha revenda, e acabei excluindo agora a pessoa quer voltar a hospedar c [...]
  • Luis Loureiro: Parabéns Eduardo! Muito bacana a matéria e o assunto que vc trata! [...]
  • Eduardo Cerqueira: Olá, pessoal ! Tenho visto as dúvidas de vocês e procurado algumas respostas. 1. Não encontr [...]
  • João Coelho: Primeiramente parabéns pelo tutorial. Segundo, instalei o tomcat em uma determinada conta e qua [...]

Visitantes do face book que gostaram