如何将OmniFaces与Spring Boot集成

Dan*_*ion 6 integration jsf omnifaces spring-boot

我找到了一些关于将JSF技术与Spring Boot集成的教程,但是让OmniFaces使用Spring Boot似乎是一项相当复杂的工作.将这两者结合在一起是一个好主意吗?

Bal*_*usC 14

首先,Java EE和Spring是竞争框架.通常,最容易选择其中一个而不是尝试混合它们.从长远来看,它最初会减少对初学者的混淆,减少对互操作性的烦恼.

Java EE框架面向Java EE容器(WildFly,TomEE,Payara等),而Spring框架面向准系统servlet容器(Tomcat,Jetty等).JSF虽然是Java EE框架的一部分,但最初并不需要太多其他Java EE工件作为依赖,因此它也可以毫不费力地在准系统servlet容器中运行.只需要JSTL作为Java EE的另一部分,这在手动安装在准系统servlet容器中是相当简单的.

从JSF 2.0版开始,添加了一个可选的Bean Validation(JSR303)依赖项,它也很容易安装在准系统servlet容器中.

从JSF 2.2版开始,添加了一个可选的CDI依赖项,如果Weld也很容易安装在准系统servlet容器中.但是,遇到麻烦:Spring只部分支持CDI.javax.inject.*支持任何内容,但不支持任何内容javax.enterprise.context.*.这迫使用户使用Spring管理的bean而不是CDI管理的bean.

根据未来的JSF版本2.3,@ManagedBean将弃用JSF自己的工具,将需要CDI依赖,并将添加更多可选的Java EE依赖:WebSocket(JSR356)和JSONP(JSR353).完全被要求的CDI与Spring一起玩不好,因为他们拒绝全面实施CDI.

反过来,OmniFaces完全适合JSF.OmniFaces 1.x针对JSF 2.0,不需要CDI.OmniFaces 1.1x甚至可以降低CDI.OmniFaces 2.x针对的是JSF 2.2,区别在于CDI是必需的,而不是可选的.这样做是因为OmniFaces的设计考虑了"最佳实践",并试图强迫用户转向CDI进行bean管理,特别是因为JSF本身也会朝着制作CDI的方向前进,因此OmniFaces 2.x用户将为未来做好更充分的准备.

鉴于上面解释的CDI问题,您现在应该意识到,如果您想使用Spring而不是Java EE,您最好选择无CDI的OmniFaces 1.1x.最新的1.1x版本是1.14,这恰好是JoinFaces的一部分.

什么是JoinFaces?

该项目在JAR打包的Spring Boot应用程序中启用了JSF.

它自动配置PrimeFaces,PrimeFaces Extensions,BootsFaces,ButterFaces,RichFaces,OmniFaces,AngularFaces,Mojarra和MyFaces库,以在嵌入式Tomcat,Jetty或Undertow servlet容器中运行.

虽然我不是春天的人,也不能从自己的经验来判断,但是如果你想继续使用Spring Boot + JSF,我会说JoinFaces是你最好的选择.

需要注意的是,尽管JoinFaces网站说,它支持CDI注解,但这并不意味着它支持的CDI实现,它真的只支持注释javax.inject.*包.

也可以看看:


归档时间:

查看次数:

1799 次

最近记录:

8 年,11 月 前