vraptor - uni7.edu.brvraptor um framework mvc focado em desenvolvimento ágil alex ferreira r...
TRANSCRIPT
-
VRaptor
Um framework MVC focado em desenvolvimento ágil
Alex Ferreira R [email protected]
-
Servlets
Base das aplicações web que usam a linguagem Java API com nível relativamente baixo Muito código para pouca funcionalidade Grande chances de ter código repetido entre as classes
-
Servlets
Toneladas de getParameter e de configurações no web.xml
-
Injeção de dependências
E se tudo o que eu preciso já chegar prontinho e bonitinho pra ser utilizado pelos meus métodos?
Bacana !
-
Injeção de dependências
#FAIL
-
VRaptor
● Made in Brazil zil zil
● Framework MVC
● Baseado nos princípios:○ Inversão de controle○ Injeção de dependências○ Convenção sobre configuração
● Encapsula a javax.servlet
-
Controllers
● São classes Java
● Recebem requisições do usuário num determinado contexto
● Possuem métodos que executam tarefas específicas
● Tem que ser anotados com @Resource para que seus métodos públicos sejam visíveis para os clientes
● Podem receber dependências através do construtor ou
através dos parâmetros dos métodos
-
CarrosController
-
Views
● Por padrão, são páginas JSP convencionais
● Ao terminar a execução do método no Controller, o VRaptor vai fazer o dispatch da requisição para o jsp adequado.
○ A convenção para a view padrão é: /WEB-INF/jsp//.jsp
● É possível alterar a convenção padrão, até mesmo processar tipos de resposta diferentes de html, como xml e json
-
View do método listar de CarrosController
O retorno de qualquer método do Controller irá ser disponibilizado na sua respectiva view
-
Acessando os métodos do controller
Convenção: http://www.meu_site.com/projeto/controller/metodo
Método listar da classe CarrosControllerhttp://www.meu_site.com/loja/carros/listar
Método salvar da classe CarrosController
http://www.meu_site.com/loja/carros/salvar
-
Components
● Classes que, normalmente, pertencem à camada de modelo
● Devem ser anotadas com @Component pra que o VRaptor possa injetá-las onde for necessário
● Podem receber suas dependências através do construtor
● Possuem tempo de vida diferenciado dos controllers
-
CarrosDao
O tempo de vida default é o de requisição, ou seja, é construído um objeto CarrosDao a cada requisição feita pelo usuário
-
Escopos - Tempo de vida dos Components
Se você anotar seus componentes com:
● @RequestScoped: o componente será criado e destruído a cada requisição feita pelo usuário
● @SessionScoped: o componente será criado e só será
destruído ao final da sessão
● @ApplicationScoped: o componente será criado quando a aplicação iniciar e só será destruído quando a aplicação for finalizada
● @PrototypeScoped: o componente será criado sempre que
requisitado por alguma dependência
-
ComponentFactory
É necessário quando um componente não faz parte do seu projeto, ou seja, quando não é possível anotá-lo com @Component.
OOOOU
Quando é necessário que o VRaptor crie objetos "customizados" por você para serem injetados em outras classes da sua aplicação
-
ComponentFactory
● Deve ser anotado com @Component● Deve implementar a interface ComponentFactory
-
Fluxo de uma requisição no VRaptor
-
TDD
-
Finalizando...
E que fim levou a agilidade que se fala no título da apresentação?
-
That's all...
vraptor.caelum.com.br
Alex Ferreira R [email protected]