当前位置:首页 > 全部子站 > IT > 思科认证

一种优雅的流行架构:Struts+Spring+Hibernate

来源:长理培训发布时间:2017-12-19 14:02:20

 百度广告

  用java来建立一个很有价值的web 应用不是一个简单的任务。在架构这个应用时要考虑很多的因素和问题。从更高的层次来看,开发人员面临着关于如何构建用户接口,何处驻留业务逻辑,以及如何实现数据持久性这些问题。这3层都有各自的问题需要回答。而每一层又需要实现那些技术?应用如何设计来进行松散耦合并能进行灵活变更?应用架构是否允许某一层变更而不影响到其它的层次?应用应该如何处理容器一级的服务比如事务? 在为你的应用创建一个架构之前有许多问题需要澄清。幸运的是,有很多开发者都意识到这个问题,并建立了很多框架来解决这些问题。一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。然而,你的应用是分层的,可能每一个层都需要各自的框架。仅仅解决UI问题并不意味着你能够很好的将业务逻辑和持久性逻辑和UI 组件很好的耦合。例如,你不应该使具有JDBC代码的业务逻辑放入控制器之中,这不是控制器应该提供的功能。一个UI 控制器应该是轻量化的组件,由它代表对UI范围之外的其它应用层的服务调用。良好的框架自然地形成代码分离的原则。更为重要的是,框架减轻了开发人员从头构建持久层代码的精力,从而集中精力来应用逻辑上,这对客户端来说更为重要。
应用层
许多设计良好的web 应用,可以被按职责分为四层。这些层次是表现层、持久层、业务层、和领域模型层。每一个层次都有其独特的职责,不能把各自的功能与其它层次相混合。每一个应用层都应该和其它层隔离开来,但允许使用接口在层间进行通信。我们开始来看看每个层,并讨论一下它们各自都应该提供什么和不应该提供什么。
表现层
一个典型的web 应用的末端是表现层。许多Java 开发者都知道Struts 提供了什么东西。然而,太多时候,耦合代码比如业务逻辑被放进org.apache.struts.Action中。所以,我们先总结一下Struts 之类的框架应该提供什么。下面就是Struts 的职责所在:
◆提供一个控制起来将调用委托到业务逻辑和其他上游处理
◆组装可以在视图中表现的模型对象
下面是一些经常可以使用Struts进行编码但是不应该和表现层关联的事情:
◆与应用相关的业务逻辑和校验
◆在表现层中引入这些类型的代码将导致类型耦合和维护负担。
持久层
一个典型Web应用的另一端是持久层。这也是应用中最容易很快失控的地方。开发者通常低估了自己构建自己的持久层框架的挑战。一个定制的,内部开发的持久层不仅需要大量的开发时间,并且通常缺乏功能和难以管理。目前有许多解决这些问题的开源对象关系映射 (ORM) 框架。特别地, Hibernate 框架就允许Java中的对象-关系的持久性和查询服务。Hibernate 对已经熟悉了SQL 和JDBC API 的Java开发者来或具有中度的学习曲线。Hibernate 的持久对象基于POJO和Java 群集(collections)。此外,使用Hibernate 不和你的IDE接口。下面列出了你需要在持久性框架中编写的代码类型:
高级的对象关系映射框架比如Hibernate支持大部分主流SQL数据库,它们支持父/子关系,事务,继承和多态。||| 
◆业务逻辑应该置于应用的更高层中。这里只允许数据访问方法。
业务层
典型的Web应用的中间组件一般是业务层和服务层。从编程的角度来说,service layer经常被忽略。这种类型的代码散布于UI表现层和持久层并不是不多见。这些都不是正确的地方因为它导致了紧密耦合的应用和难以维护的代码。幸运的是,大多数框架都解决了这个问题。这个空间内最流行的两个框架是Spring 和PicoContainer。它们都被视为是具有非常小的足迹(footprint)并且决定如何将你的对象整合在一起的微容器 (microcontainer)。这些框架都建立在一种叫做依赖性注入(dependency injection) (也称控制反转(inversion of control:IOC))的简单概念之上。我们将关注Spring中通过针对命名配置参数的bean属性的setter 注入的使用。Spring 也允许一种更加高级的构造器注入(constructor injection)形式作为setter injection 的可选替代。对象通过简单的XML 文件进行连接,该配置文件包含对各种对象的引用,比如事务管理处理器(transaction management handler),对象工厂,包含业务逻辑的服务对象,以及数据访问对象(DAO)。我们随后会用一些例子来澄清Spring中使用这些改变的方式。业务层应该负责下面的问题:
◆管理事务
◆管理业务级对象之间的依赖性
◆从表现层暴露上下文给业务层以获得业务服务
领域模型层

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)