我没有使用Spring,但听起来它很受欢迎。我听说它提供了另外的处理方式,例如能够使用RESTful Web服务。有谁知道是否提供与JSF 2引入的功能类似的功能,或者我会将苹果与橙子进行比较?
修改
感谢您提供的信息。将Spring MVC与JSF 2进行比较,使用Spring MVC而不是JSF 2功能会有什么好处吗?
感谢。
答案 0 :(得分:17)
苹果到橘子。
Spring是一个应用程序框架,它在一个堆栈中集成了依赖注入,面向方面的编程和其他几个东西。它粗略的苹果与苹果的比较将是J2EE。
JSF是一种视图层技术,建立在模型视图控制器范例之上。它粗糙的橘子与橘子的比较将是Spring MVC。两者都可以使用不同的View技术(即Facelets,JSP,Velocity等),并且两者都能很好地集成到各自的堆栈中。
- 回答新问题 -
我已经使用了相当数量的JSF2(尽管任何人都可以使用它的年龄),我发现它是一个非常好的框架。它修复了JSF 1.2的许多缺点,我觉得JSF 1.2也适合我。
我不使用了很多Spring MVC,但我查看了其他开发人员已经完成的一些代码。
我(非常)有限的经验是,Spring MVC更像是一个“动作”框架,而JSF更像是一个“组件”框架。我个人认为,组件式框架是OOD的更自然的扩展,这对我和我编写软件的方式很有吸引力。
答案 1 :(得分:4)
Spring MVC是Spring框架内的Web框架。它确实提供了JSF 2.0中的功能:
然而,您可以将Spring(不是Spring MVC)与JSF 2.0一起使用,spring提供依赖注入,aop,事务管理机制和提供Web层的JSF。
答案 2 :(得分:2)
JSF只是MVC的视图层,需要与其他技术(如Spring / Hibernate或EJB)一起用于完整的MVC。
Spring(不是Spring MVC)是MVC的控制器层,正如我所说的那样可以用于像JSF(Struts,JSP / Servlets等)和类似Hibernate的东西。
我现在已经使用Spring MVC大约6个月了,虽然它可能不是最新版本的SpringMVC我发现有点烦人的是我们有太多的XML需要处理。所有托管bean和DAO都有XML配置。此外,似乎所有事情都必须采用名为onSubmit()的方法。
在我看来,像EJB这样的JSF简化得太简单了...... 一切都可以使用Annotations完成,所以只需在你的支持bean中使用@ ManagedBean = theBean,并在你的JSF中放置{thebean.param},你就可以访问支持bean的数据了。 您还可以使用EJB的会话bean作为JSF的支持bean,然后直接访问DAO(模型层)实体bean。 再简单地使用@Entity注释和EntityManager类此外,我喜欢您可以自由设置自己的操作方法的方式,这样您就可以在bean中创建一个名为TheBean.addDetails()的方法,并使用theBean.addDetails()在JSF中调用它,而不是通过一个方法调用它与Spring MVC一样的方法。
正如我所说的,JSF只是MVC的视图层,我个人喜欢将它与EJB一起使用,因为这样可以在Suns J2EE.jar中为您提供完整的MVC,因此确保您拥有正确的版本和无需配置。JSF 2.0远远超过了JSF1.2,它总是像EJB3.1一样感觉就像EJB2.1一样,就像EJB2.x一样,甚至比EJB3.0好得多。 对我来说,带有EJB3.1的JSF2.0非常简单易用,而且一切都非常透明。
答案 3 :(得分:1)
我正在使用JSF 1.2 + JSF管理员2年,现在我已经开始迁移到JSF2.0了。在了解了Spring和Spring MVC之后,我觉得JSF(1.2或2.0)+ Spring(服务而不是MVC)+ Hibernate将是一个非常好的架构。
答案 4 :(得分:1)
Spring数十亿配置中最糟糕的部分之一,即使在Spring3中你也必须拥有配置文件...例如你有SOAP Web服务并希望将Spring集成为后端..你可以找到你不能注入的东西Spring bean在常规的Web服务..你必须将你的服务更改为Spring SOAP ..... Spring3使用了注释,但是每次猜测用于打开或关闭某些服务的注释都会让你烦恼.... 相反,你可以拥有强大,简单的EJB3.1,作为java开发人员,你可以享受它。 我注意到很多Spring粉丝不再了解EJB3,他们为什么喜欢Spring :)))
答案 5 :(得分:0)
JSF2可以用作后端和前端,并且它还具有比Spring MVC更好的依赖注入,导航和验证。
Spring本身可以用作企业框架而不是EJB3.1 / EJB3.1更好/,但是作为前端JSF2与primefaces没有其他选择。