Agora é divertido programar em Java com Spring Roo

In: Java

11 Jul 2010
Visualizações :13592

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

9 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!

Avatar

home health care jobs

September 9th, 2016 at 17:25

Hi there it’s me, I am also visiting this web page regularly, this web site is in fact pleasant and the people are genuinely sharing
nice thoughts.

Avatar

porn

December 1st, 2016 at 13:25

I think what you posted made a bunch of sense. However,
consider this, suppose you typed a catchier title? I am not saying your information isn’t good, however what
if you added something that grabbed people’s attention? I mean Agora é
divertido programar em Java com Spring Roo | Blog do Eduardo Cerqueira
is kinda vanilla. You might peek at Yahoo’s front page and see how they create post
headlines to grab people to open the links. You might add a
video or a related picture or two to get people interested about everything’ve written. Just my opinion, it would bring your posts a little bit more interesting.

Avatar

news in naija today

December 14th, 2016 at 15:27

Howdy very cool website!! Guy .. Excellent .. Amazing .. I will
bookmark your site and take the feeds also? I
am glad to seek out numerous helpful info here within the publish,
we want work out extra techniques in this regard, thanks for
sharing. . . . . .

Avatar

Family Dentist Plantation Fl

December 21st, 2016 at 16:12

It’s going to be finish of mine day, but before end I am reading this wonderful piece of
writing to increase my know-how.

Avatar

Marquee Hire Leeds

January 18th, 2017 at 06:40

Thanks a bunch for sharing this with all people you really realize what you’re talking approximately!
Bookmarked. Kindly additionally consult with my web site
=). We could have a link alternate contract between us

Avatar

vergaderruimte huren hoofddorp

May 23rd, 2017 at 01:17

What’s up to all, since I am really eager of reading this
blog’s post to be updated on a regular basis.
It consists of nice material.

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

  • vergaderruimte huren hoofddorp: What's up to all, since I am really eager of reading this blog's post to be updated on a regular b [...]
  • Marquee Hire Leeds: Thanks a bunch for sharing this with all people you really realize what you're talking approximately [...]
  • Family Dentist Plantation Fl: It's going to be finish of mine day, but before end I am reading this wonderful piece of writing t [...]
  • news in naija today: Howdy very cool website!! Guy .. Excellent .. Amazing .. I will bookmark your site and take the fe [...]
  • porn: I think what you posted made a bunch of sense. However, consider this, suppose you typed a catchier [...]

Visitantes do face book que gostaram