我一起使用Spring和JSF。并且使用SpringBeanFacesELResolver
进行了整合。
我正在用@Repository
注释注释DAO类。但它引起了一个问题:DAO类现在对XHTML / JSF / JSP文件可见
因此,现在可以从View层访问Persistence层。它似乎不是一个好方法。
如何解决?
答案 0 :(得分:0)
类路径中的任何公共类都将对您的JSP / JSF可见。但是,只要您不从表示层导入/使用这些类,我就不会打破基于图层的间接 - 在我看来。
作为旁注 - 如果您的应用程序没有多种客户端或多个跨国资源,那么很可能您需要一个业务/服务层,并且它有效直接从您的表示层/控制器调用您的存储库。
答案 1 :(得分:0)
JSF是服务器端技术,对于xhtml文件,面向servlet只有do the proper mapping。然后,最终用户无法查看任何xhtml文件的源内容,导致他对.xhtml源的所有请求都将通过faces servlet驱动,从而转换为纯HTML-CSS-javascript组合。
如果JSF是您的视图层框架(它是唯一声明的servlet映射),那么最终用户将无法访问您的服务方法,至少在没有跳过JSF本身的情况下也是如此。它将为您处理安全性和基本请求验证。
无论如何,我不建议你通过xhtml访问Spring bean。对于架构问题,只需使用托管bean即可。如果您查看文档的Integrating with other web frameworks部分,您将找到如何使用FacesContextUtils
类从JSF托管bean中获取Spring bean。