Using Spring with JSF/Facelets
我想澄清一些事情。
我已经使用JSF和facelets(xhtml网页)在Eclipse IDE中开发了一个Web应用程序。现在,我的经理告诉我要重新创建此应用程序,但要使用Spring作为RESTful Web应用程序。
我对Spring MVC及其DI / IoC功能进行了一些研究,并提出了一些问题:
我看到Spring提供了DI / IoC,JSF不提供吗?
您可以在JSF中创建RESTful Web应用程序吗?
由于JSF像Spring一样使用bean,因此与JSF相比,使用Spring有什么优势?
facelets只是Spring框架的视图部分吗?
我可以将Spring IoC / DI与facelets一起使用吗?
我开始认为他只是想让我保持项目不变,而是添加Spring的IoC / DI。
如您所见,我在这个问题上很困惑,想澄清一下。
- 您正在将" JSF"与" Spring"进行比较,这首先是完全错误的,并且显然是所有混乱的根源。您应该将" Java EE"与" Spring"进行比较。然后,JSF就像Spring MVC,CDI / EJB就像Spring IoC / DI,JAX-RS就像Spring Web,等等。
-
@BalusC,我阅读了您的答案,Spring MVC是动作驱动的,而JSF MVC是组件驱动的。我看到您说过您可以在Spring MVC中使用Facelets,在JSF MVC中使用Spring IoC / DI,但是您不能一起使用Spring MVC和JSF MVC,因为那没有意义。现在,您可以在JSF中创建RESTful Web应用程序吗?
我能理解你的困惑。曾经做过一个项目,在其中我将JSF用作前端,将Spring MVC用作后端。
对您来说,答案是肯定的,您可以通过使用JSF Bean(例如托管Bean)来使用JSF进行控制反转,但您需要牢记以下几点。
1:您需要同时注册JSF和Spring的bean。
2:建议您在JSF和Spring中为此bean设置相同类型的作用域。
例如:如果要在JSF中为特定bean设置请求范围,那么您还应该在Spring中为同一bean设置请求范围。在Spring中只有视图范围不可用,但是您可以编写自定义视图范围,这没什么大不了的
回答部分问题Are the facelets just the view part of the Spring framework?
不,您不能说它是spring的一部分,facelets由JSF处理,但是可以,它们主要用作视图的一部分。因此,当您计划使用JSF和Spring制作应用程序时,我将解释为您将JSF用于前端,将Spring用于后端。
使用JSF的宁静服务:
是的,您可以使用JSF提供安心的服务。这是关于此的非常好的博客。JSF中的Restful Web Services您还可以在Spring中的Spring Rest Web Services中创建Restful Web Service。
- 我知道了,但是我看不到需要使用两个不同的框架来实现相同的bean。也许我需要与我的经理澄清他的真正需求。
-
请查看编辑后的答案,如果您发现新的有用的内容,那么我将寻求您投票赞成和接受答案的奖励:):P
-
好的,我现在知道了,谢谢您的回答。
-
" Spring MVC作为后端",对不起,这纯粹是胡说八道。您将Spring DI / IoC与MVC混淆了。
-
完全使用JSF和Spring MVC的唯一方法是为它们使用不同的url映射。这样,您可以利用将某些Spring bean作为服务,并从JSF和Spring MVC访问它们(对于您所说的RESTful服务)。但是,将两个框架生命周期混合在同一个HTTP请求中只会导致灾难x-(