SSH与MVC自己总结(AOP/IoC/DI)

来源:互联网 发布:黑五买什么知乎 编辑:程序博客网 时间:2024/05/16 16:57

1、Action/Service/DAO简介
Action是管理业务(Service)调度和管理跳转的。
Service是管理具体的功能的。
Action只负责管理,而Service负责实施。
DAO只完成增、删、改、查,虽然可以1-n、n-n、1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,DAO只是封装增、删、改、查。至于如何增、删、改、查去实现一个功能,DAO是不管的。

总结这三者,通过例子来解释:
Action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;
Service是厨师,action送上来的菜单上的菜全是ta做;
Dao是小工,和原材料打交道的事情全是ta管。

相互关系是,小工(Dao)的工作是满足厨师(Service)的要求,厨师要满足服务员(Action)转达的客户(页面用户)的要求,服务员自然就是为客户服务喽。

现在最基本的分层方式,结合SSH框架。Model层就是对应数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库(增、删、改、查)。Service层:引用对应的DAO数据库操作。Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。

以上的Hibernate、Structs,都需要注入到Spring的配置文件中,Spring把这些联系起来,成为一个整体。

2、三大框架Struts/Hibernate/Spring
简单地说:
Struts——控制用的;
Hibernate——操作数据库的;
Spring——解耦用的;

详细地说:
Struts在SSH框架中起控制的作用,其核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,主要控制逻辑关系的处理。
Hibernate是数据持久化层,是一种新的对象、关系的映射工具,提供了Java类到数据关系表的映射,也提供了数据查询和恢复等机制,大大减少数据访问的复杂度。把对数据库的直接操作,转换为对持久对象的操作。
Spring是一个轻量级的控制反转(IoC)面向切面(AOP)的容器框架。
 面向接口的编程,由容器控制程序之间的依赖关系,而非传统实现中,由程序代码直接操控,这就是所谓“控制反转”的概念所在。
(依赖)控制权由应用代码中转到外部容器,控制权的转移,是所谓反转。
依赖注入
 即组件之间的依赖关系由容器在运行期决定,形象地说,即由容器动态地将某种依赖关系注入到组件之中,起到的主要作用是解耦。
切面概念
 在软件中,有些行为对于大多数应用都是通用的。日志、安全、事务管理的确很重要,但它们是否是应用对象主动参与的行为呢?如果让应用对象只关注于自己所针对的业务领域问题,而其它方面的问题由其它应用对象来处理,这会不会更好呢?
 在软件开发中,分布于应用中多处的功能被称为横切关注点。通常,这些横切关注点从概念上是与应用的业务逻辑相分离的(但是往往直接嵌入到应用的业务逻辑之中)。将这些横切关注点与业务逻辑相分离正是面向切面编程(AOP)所要解决的。
 这里写图片描述
面向切面编程
 由于组件是在运行期间组装、调用的,因此Spring即可以在执行完A组件后执行组件B,也可以在执行完A组件后执行B组件前再执行C组件。也就是说,将C组件插入到A组件与B组件之间。
 如果把A、B、C看成是切面,这就是AOP,面向切面的编程。面向切面编程的思想就是在执行某些代码前执行另外的代码,使程序更灵活,扩展性更好,可以随便的添加、删除某些功能。

第二次扩展:

Struts、Hibernate、Spring在各层的作用:
(1)Struts负责Web层:ActionFormBean接收页面表单中提交的数据,然后通过Action进行处理,再Forward到对应的页面。在struts-config.xml中定义,ActionServlet会加载。

(2)Spring负责业务层管理,即Service(或Manager)。
Service为Action提供统一的调用接口,封装持久层的DAO;
可以写一些自己的业务方法;
统一的JavaBean管理方法;
声明式事物管理;
集成Hibernate。

(3)Hibernate,负责持久化层,完成对数据库的crud操作,提供OR/Mapping。它由一组hbm.xml文件和POJO,是跟数据中的表相对应的。然后定义DAO,这些跟数据库打交道的类,它们会使用PO。

3、框架业务逻辑分析
在Struts+Spring+Hibernate的系统中,
对象调用流程:

JSP——Action——Service——Dao——Hibernate。

数据的流向是:ActionFormBean接受用户的数据,Action将数据从ActionFormBean中取出,封装成VO或PO,再调用业务层的Bean类,完成各种业务处理后再Forward。而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作。

SSH框架的优点:
Hibernate的最大好处就是根据数据库的表,反向生成实体类,并且还有关系在里面,还有就是它对数据的操作也很方便;
Spring,省去了在对象里面new对象的过程,把这个调用与被调用的关系直接展示到了配置文件里,做任何操作都变得简单了。

0 0
原创粉丝点击