Spring中类似CDI的会话范围

时间:2012-12-04 21:56:40

标签: spring jsf-2

我一直在开发Spring 3 + JSF 2.0应用程序。它们运行在简单的Tomcat或Jetty容器上。看广告CDI我羡慕对话范围。

您是否了解Spring的简单会话范围实现?我不想使用成熟的SpringMVC + WebFlow + SpringFaces堆栈。我只需要一个支持会话范围的Web过滤器,让我注入会话对象并启动或停止它。就像CDI一样。

4 个答案:

答案 0 :(得分:3)

不完全是你的问题,但是因为你要求一个解决方案以避免使用Spring Webflow,Spring Faces等......看起来你只是在使用Spring for DI(我的意思是你是不那么依赖于Spring生态系统)。好吧,也许在这种情况下,考虑迁移到Java EE 6堆栈是值得的。我不认为迁移会那么困难,因为你在Spring中使用的并不多,如果你在春天仍然需要bean,你可以为它们编写一些CDI生产者。您可以谷歌搜索从Spring到Java EE 6的一些迁移路径。

如果你害怕“重型Java EE容器”,那么jboss 7.1,Glassfish 3.1.2和TomEE都会在2秒钟内从我的笔记本上开始,我打赌你的tomcat + spring容器无法启动更快。

只是我的意见。

答案 1 :(得分:2)

你应该看看Apache TomEE + CODI项目(Apache MyFaces的主题)和/或Apache Deltaspike(不确定该文档是最新的,因为它还很年轻)

TomEE为您提供了CDI的优势,CODI在cdi和jsf之间添加了一个小的集成层,使其非常强大(它将集成在deltaspike中,但仍然有点进行中)

答案 2 :(得分:1)

MyFaces Orchestra(也与Mojarra合作)目前是Spring上最好的JSF 2.0会话范围实现。

答案 3 :(得分:0)

在托管bean上使用JSF @ViewScoped注释,它为您提供与CDI会话范围相同的类似会话的语义。 CDI的会话范围和JSF的视图范围之间的一个区别是,CDI为您提供了明确而直接的对话控制,而JSF viewcope几乎可以使用。但是使用JSF的ViewScope,您可以准确地知道对话的边界:当您加载支持@ViewScoped bean的页面时会开始对话,并在页面关闭时结束。这对许多用例来说都很方便

Primeags的Cagatay也有this hack来模拟Spring中的CDI范围。

来自Richfaces团队的Max Katz的

This tutorial也为JSF ViewScope提供了一个很好的介绍