JSF-SPRING-HIBERNATE 架构 - 支持 Bean 相关的最佳实践



我正在开发一个Web项目,经过大量研究,我决定继续使用JSF+Primefaces,Spring和Hibernate方法。在设计我的项目架构时,我最终确定了以下方法:

演员 --> JSF+PrimeFaces 页面 ---> 背豆 --> 服务豆 -->道 --> Hibernate

  • Service Bean 和 DAO 是带有依赖注入的春豆。

我现在关心的是支持豆子:我计划为 UI 页面使用多个后备 bean,具体取决于我需要呈现的页面类型。

现在例如:对于一个新的用户注册页面,我有UserProfile.xhtml它使用UserBackingBean。UserBackingBean在spring注入了UserServiceBean。UserServiceBean有Spring注入的用户道。

现在,在UserBackingBean中,当用户从UserProfile输入表单数据时.xhtml我将不得不填充User.java domain(ORM(对象。

a( 这方面的最佳实践是什么?我应该在UserBackingBean的构造函数中启动User.java吗?这是正确的方法吗?请建议是否有其他出路?

b( 另外,请建议我为我的项目决定的上述架构?这是正确的方法吗?

我遵循的一般规则是事务边界在服务豆中标记,因此我不喜欢在服务之外修改休眠 POJO,因为我不知道是否有事务已经在运行。因此,从支持bean中,我会调用服务层传递服务层所需的参数,以构建休眠pojo并保存,更新它,...等。

另一种方法是让你的支持 Bean 实现一个由服务层定义的接口,然后将后备 Bean 传递给服务层。例如。

public interface UserInfoRequest {
     public String getName();
}

@Service
public class SomeSpringService {
   @Transactional(.....) 
   public void registerNewUser(UserInfoRequest request)
   {
   }
}
public class SomeBackingBean implements UserInfoRequest {
    private SomeService someSpringService; 
    public void someMethodBoundToSJF()
    {
         this.someSpringService.registerNewUser(this); 
    }
} 

关于你的最后一个问题,我不是JSF的粉丝,我认为JSF从根本上是有缺陷的,因为它是基于服务器组件的框架。所以我反对JSF的论点是反对基于服务器端组件的框架的通用论点。

基于服务器端组件的框架的主要缺陷是您无法控制组件将输出的内容,这意味着您只能使用组件的外观,如果您想要看起来不同的东西,则必须编写自己的组件,或者必须修改现有组件。Web浏览器目前正在快速发展,添加新功能可以真正提高应用程序UI的质量,但对于这些功能,您必须直接编写HTML,CSS和JavaScript,而服务器端组件使这更加困难。

客户端组件体系结构就在这里,比在服务器端做组件要好得多。这是我推荐的堆栈。

客户端架构:

  • jquery.js - 基本库,使所有浏览器看起来与JavaScript相同
  • 主干.js + 下划线.js - 基于高级客户端组件的架构
  • 车把.js - 用于客户端模板
  • Twitter引导程序 - 获得一套不错的CSS和小部件入门

您用 HTML、CSS 和 JavaScript 编写代码,这些代码组织为与服务器端通信的主干视图使用 AJAX 的模型。您可以完全控制客户端用户体验结构,真正制作出漂亮的可重用代码。

服务器端架构:

  • 注解驱动的Spring MVC, Services and Dao(@Controller,@Service,@Repository(
  • 按类型(@Autowired、@Inject(自动布线扫描弹簧组件
  • AspectJ 加载时编织或编译时编织
  • 冬眠
  • 雄猫 7
  • JSP作为Spring MVC的视图技术(是的,它很笨拙,但你不会创建JSP页面太多,主要用于USNG <%@inculde>指令

工具: - 弹簧工具套件 - JRebel(这样你就不必启动和停止服务器(它真的物有所值 - 雄猫7

相关内容

  • 没有找到相关文章

最新更新