Integrando o Spring ao Tapestry
Recebi hoje o e-mail de um leitor que, após conferir os tutoriais sobre o Tapestry (a última parte, sendo mais específico), não gostou muito do HiveMind. Já imaginava que isso aconteceria, pois o HiveMind é um framework atípico e difícil de se entender (principalmente pela escassez de documentação).
Uma vez que o framework Spring é bem mais conhecido (e melhor documentado) que o HiveMind, então estarei mostrando aqui o que deve ser feito para que beans gerenciados pelo Spring possam ser injetados em páginas Tapestry.
UPDATE: A aplicação Tapestry-Guestbook (mostrada na última parte dos tutoriais sobre o Tapestry) foi modificada seguindo as instruções contidas neste post. Assim, caso seja de seu interesse, você pode ver na prática como a integração do Tapestry com o Spring foi implementada.
Baixando e instalando o Tapestry-Spring
O Tapestry-Spring é um plugin para Tapestry que serve para, como poderia explicar, integrar o Spring com o Tapestry.
Tudo o que você precisa fazer para instalar este plugin é baixar o binário (v1.0.0) e adicionar o JAR no CLASSPATH da sua aplicação.
Configurando o Spring
Com o Tapestry-Spring instalado, precisamos agora configurar a aplicação web para levantar o Spring. Primeiramente, crie o arquivo applicationContext.xml, no diretório WEB-INF:
-
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<beans>
-
<bean id="BEANID" class="com.foo.bar.MyBean" />
-
</beans>
-
Finalmente, altere o arquivo web.xml:
-
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<web-app …>
-
-
<context-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>/WEB-INF/applicationContext.xml</param-value>
-
</context-param>
-
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-
</listener>
-
-
<!– continua… –>
-
</web-app>
-
Injetando beans Spring em páginas Tapestry
Agora vem a parte mais complicada.
Na sua página Tapestry, utilize a anotação @InjectObject para injetar o bean:
-
-
-
// imports…
-
-
public abstract class MyTapestryPage extends BasePage {
-
-
@InjectObject("spring:BEANID")
-
public abstract MyBean getMyBean();
-
-
// continua …
-
}
-
Enjoy!
PS: A versão do Spring utilizada nos meus testes foi a versão 1.2.9, embora eu acredite que os procedimentos aqui explicados devam ser válidos para as versões 2.x.
Tags: framework, integração, ioc, java, spring, tapestry, tutorial, web
