Lançamento do VRaptor 4 final

Lançamento do VRaptor 4 final
rodrigo.turini
rodrigo.turini

Compartilhe

Depois de mais de 60 mil downloads diretos do VRaptor 3 (sem contar via maven), mais de dois mil commits, a versão 4.0.0.Final do VRaptor está disponivel para download. Junto com ela um novo site com novidades sobre as atualizações do framework. Você já pode começar a usar baixando o blank-project ou nosso projeto exemplo, o vraptor-musicjungle.

Ou se você utilizava alguma versão anterior, já pode atualizar a dependência em seu projeto:

 <dependency> <groupId>br.com.caelum</groupId> <artifactId>vraptor</artifactId> <version>4.0.0.Final</version> </dependency> 

E se você nao conhece o VRaptor, pode começar agora pelo guia de 1 e de 10 minutos.

O VRaptor 4 utiliza o CDI 1.1 como container de DI (injeção de dependências), portanto tira proveito das features específicas dessa já conhecida e bastante utilizada especificação do JavaEE 7.

E o melhor, utilizando VRaptor você também pode tirar proveito desses recursos. Caso anda não esteja familiarizado com o CDI, você pode ler como começar com essa especificação, conhecer algumas das features da versão 1.1 e entender como customizar a produção de suas dependências, tudo no blog da Caelum.

Trabalhando com eventos do CDI

Nosso fluxo principal agora é tratado com eventos do CDI, assim nosso código ficou ainda mais desacoplado e extensível. Nessa página da documentação exibimos um mapa dos eventos e seus observers, assim como uma explicação simples sobre o que cada um deles representa.

Você pode facilmente observar os eventos do VRaptor, para isso basta escrever um observer simples como esse:

 import javax.enterprise.event.Observes; import br.com.caelum.vraptor.events.ControllerNotFound;

public class ControllerNotFoundHandler { public void metodo(@Observes ControllerNotFound evento) { // alguma ação para quando o controller não for encontrado } } 

Um novo modelo de Interceptors

Se você precisa de ordenação na execução de seus eventos, considere utilizar Interceptors. O VRaptor 4 possui um novo modelo baseado em anotações! Veja como pode escrever seu interceptor:

 @Intercepts public class ApplicationInterceptor {

@Accepts public boolean accepts(ControllerMethod method) { return method.containsAnnotation(Audit.class); }

@BeforeCall public void before() { // código a ser executado antes da lógica }

@AfterCall public void after() { // código a ser executado depois da lógica }

@AroundCall public void intercept(SimpleInterceptorStack stack) { // código a ser executado antes da lógica stack.next(); // continua a execução // código a ser executado depois da lógica } } 

Um interceptor sem o método anotado com @Accepts é global, ou seja, vai interceptar todas as requisições. Outra novidade dos interceptors é que você pode utilizar os aceptors customizados como o @AcceptsWithPackage e @AcceptsWithAnnotations:

 @Interceptor @AcceptsWithAnnotations(Audit.class) public class AuditInterceptor { ... } 

A criação de seus próprios custom acceptors é bem simples e está bem detalhada aqui.

Environment integrado ao core

O plugin vraptor-environment foi integrado ao core e ganhou novas features! Você ainda pode receber o Environment injetado e chamar seu método get para ler propriedades, dessa forma:

 String email = environment.get("email"); 

Porém agora como alternativa você pode simplesmente pedir a propriedade injetada com o uso da anotação @Property:

 @Inject @Property private String email; 

Como neste caso a propriedade tem o mesmo nome da chave, passar o value é opcional. Mas você poderia fazer algo como:

 @Inject @Property(value="email-de-dev") private String email; 

... e ainda passar um valor default, para caso a propriedade não exista:

 @Property(value="email-de-dev", defaultValue="[email protected]"). 

E quanto aos nossos plugins?

Dentre diversos outros aqui não listados, os seguintes plugins já possuem uma versão compativel com essa nova versão do framework:

vraptor-time-converters - trabalhar com date time e java time vraptor-simplemail - já conhecido plugin de envio de emails vraptor-errorcontrol - controle de erros efetivo com envio de e-mails vraptor-quartzjob - schedule Quartz para agendamento de tarefas vraptor-freemarker - trabalhar com templates do freemarker vraptor-jpa e vraptor-hibernate - produtores e controle de transação vraptor-brutauth, vraptor-shiro e vraptor-authz - autent. e autorização vraptor-dash - dashboard com diversar ferramentas pro seu projeto

Você pode ler mais sobre essas e outras novidades no site do framework. O VRaptor 4 é uma evolução da versão 3, portanto grande parte dos conceitos como as convenções, injeção pelo construtor e uso do Result, continuam da mesma forma. Para te ajudar a migrar de VRaptor 3 para VRaptor 4 criamos esse tutorial.

Agradecemos a todos os desenvolvedores ativos e pessoal da comunidade que contribuem tanto para o crescimento do projeto. Esse é o momento perfeito para usar VRaptor 4 em seus projetos, vários projetos já estão usando em produção, inclusive o guj.com.br que utiliza desde sua primeira versão beta publica.