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

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IOC(Inversion of Control)是一种设计则,也可以理解为一种编程模式。它的核心思想是对象的创建、依赖关系的管理和制权从应用程序代码转移到容器,即由容器来负责对象的创建管理,而不是由应用程序代码来动创建和管理对象。通过IOC,我们可以实现应用程序的解耦,提高可维护性和灵活性。 DI(Dependency Injection)是IOC的一种实现方式。它是指在对象创建的过程中,通过容器将对象所依赖的其他对象注入到目标对象中,从而实现对象之间的解耦。通过DI,我们可以通过配置或注解的方式将对象的依赖关系交给容器来管理,而不需要在代码中显式地创建和注入依赖对象。 AOP(Aspect-Oriented Programming)是一种编程范式,用于在运行时动态地将横切关注点(如日志记录、事务管理等)与业务逻辑相分离。AOP通过在程序执行过程中自动植入切面(Aspect),实现了对横切关注点的集中管理和复用。这样,我们就可以将与业务逻辑无关的代码抽取出来,提高代码的重用性和可维护性。 事务是指由一系列数据库操作组成的逻辑单元,这些操作要么全部成功提交,要么全部失败回滚。事务可以保证数据的一致性和完整性。在数据库事务中,通常会使用ACID四个特性来确保事务的正确执行:子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 以上就是对IOCDIAOP和事务的简要描述。这些概念在软件开发中非常重要,可以帮助我们设计和构建更加灵活、可维护和可扩展的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值