java开发之SSM开发框架的快速理解

1、什么是SSM开发框架

要明白什么是SSM开发框架?需要先弄清楚开发框架的概念。开发框架就是一套规则和写好的框架代码,它帮助我们实现了很多基础性的功能,节省了程序员大量的编码工作,让程序员可以把更多精力放到系统业务逻辑处理上。java培训例如Spring框架可以简化Java程序对数据库的访问,使用Spring框架访问数据库即提高了数据库的访问效率和稳健性,程序员也无需编写大量访问数据库的基础代码,只需要把访问数据库的SQL语句写好就可以了。

开发框架还可以提高程序的规范性和代码的重用性。例如Spring MVC制定了一种适用于Web应用程序的设计模式,这种设计模式就是MVC。M是Model(中文名称是数据模型),一般是实体类,可以被多个视图共用;V是View(中文名称是视图),可以是JSP、ASP等动态页面;C是Controller(中文名称是控制器),用于接收视图发起的请求或返回已处理的内容到视图。程序员要使用MVC开发Web应用程序,就必须遵守MVC规定的设计模式。下图显示了Spring MVC的视图、模型、控制器交互过程。

上图中视图就是JSP页面,JSP页面发送请求到Controll类,也就是MVC的控制器,Controll类收到视图发出的请求后,会对请求进行分发,并调用相关的业务类对请求进行处理;POJO类(实体类,也就是MVC的数据模型)是业务类要处理的数据对象,处理的数据对象可以由控制器返回到视图。

开发框架还可以提高程序的可扩展性和可维护性。例如我们编写的Web应用程序一般都需要支持数据库的开发,在Web应用程序中编写数据库的SQL访问代码,并支持MySQL数据库。当客户提出要支持Oracle数据库时,我们就需要重新编写所有访问数据库的代码,这显然不是我们想要的结果,也可以说这个Web应用程序的可扩展性和可维护性都很差。

如果在Web应用程序中使用Mybatis数据库开发框架,就会避免这样的情况发生。只需通过工具自动生成Mybatis的数据库访问类文件和映射文件就可以了。当然在实际编程中,可能没有这么简单方便,如果自己扩展了Mybatis的映射文件和数据库访问类文件,那么扩展的这部分可能还得需要自己编写或修改SQL语句。

现在我们已经知道了什么是开发框架,也知道了使用开发框架可以减少程序员的编码工作量,并极大提高了程序的规范性、可扩展性和可维护性,也间接提高了程序的质量。下面我们再来说说什么是SSM。

SSM是三个开发框架的集成,第一个字母S是指Spring开发框架,第二个字母S是指Spring MVC开发框架,第三个字母M是指Mybatis数据库开发框架。实际上Spring MVC是Spring框架的扩展,是属于Spring框架的一部分,因此应该是两个开发框架的集成。SSM现在已经成为主流的Web应用程序开发框架,人脉项目也将使用SSM开发框架来架构系统。

2、Sping框架

说起Spring框架,就不得不说J2EE的EJB。年龄稍大一些的Java程序员对J2EE的EJB还是记忆犹新的,当时使用EJB开发大型应用系统非常时髦,Java程序员无不以掌握EJB开发技术为自豪,程序员引以为豪的原因是EJB的技术太复杂了,以至于一般的Java程序员很难掌握这么复杂的技术。

EJB的学习成本很高,开发效率却不高,需要编写很多重复的代码,这些问题阻止了EJB的继续发展。就在EJB技术止步不前的时候,Spring框架在合适的时机出现了,Spring框架和EJB不同,Spring框架的学习成本非常低,它是一个轻量级的开发框架,更多强调面向对象的设计,而不是让现有的技术变得更复杂,它使用JavaBean替代了复杂的EJB,并且为JavaBean提供了简单易用的应用配置框架。

一个JavaBean就是一个公共类,它可以被其它JavaBean类作为组件来使用,并且JavaBea之间的组配不需要在代码级实现,完全可以在配置层和注解层实现,Spring会自动选择相适配的JavaBean来组配运行。这种自动适配机制避免了JavaBean与使用类之间的代码耦合,提高了程序的可扩展性和维护性。

例如类A要使用类B,类B是类A的属性,如果直接在类A中创建类B,当类B因业务需要修改时,也需要修改类A的代码,这种写法就是代码耦合,也可以说类A和类B属于代码耦合。

假如我们把类B的创建交给Spring,Spring通过配置文件或者通过Java注解来创建类B,然后再由Spring把创建的类B实例和类A的实例组配起来,这样就避免了类A与类B的代码耦合。这种机制就是Spring框架的控制反转思想,相当于类A把创建类B权利交给了Spring,由Spring来控制类B的创建。

Spring框架还有一个比较重要的功能,那就是AOP机制。Spring框架的AOP机制可以把系统中的一些通用功能抽取出来,作为JavaBean来使用,与此同时在系统的业务流程代码中设置调用这些JavaBean功能的切入点,当系统业务流程执行到切入点时,Spring会自动把需要调用的JavaBean横向切入到业务流程指定的位置,AOP的这种技术也称为“横切”技术。

例如,在一个业务系统中,当用户要进入需要操作权限的页面时,系统会先进入登录页,要求用户登录系统后再进入该页面。这样的操作权限页面会有多个,如果为每个页面都写登录业务逻辑处理代码,显然是会造成代码冗余,维护起来也非常麻烦。比较好的做法是把用户登录业务处理作为一个独立的JavaBean,这个JavaBean也称为AOP的“切面”。然后在需要用户操作权限的业务流程页面设置“切入点”,并通过注解或配置文件将“切面”和“切入点”连接起来。当业务流程执行到“切入点”时,Spring框架会自动把与切入点关联的“切面”切入到业务流程“切入点”所在的位置,开始执行“切面”代码,直至切面代码执行完毕,然后根据“切面”返回的结果确定是否执行后面的流程。下图是用户登录功能切入到业务流程的示意图。

 

Spring框架还有一个最大的特征就是和现有的开发框架不是竞争关系,而是采用融合的方式将其它框架集成进来,充分利用其它框架的技术,为系统实现提供最优解决方案。SSM就是Spring框架融合了MVC框架技术和MyBatis数据库框架技术。

Spring MVC是Spring框架的一部分,Spring框架成为Java EE开发主流框架后,Spring开发小组又在Spring框架的基础上推出了MVC架构,主要用于支持WEB应用程序的开发。

MVC是Model(模型,也称为数据模型)、View(视图)、Controll(控制器)三个英文单词首字母的缩写。从MVC组合的三个单词也可以看出,MVC是一种设计模型,它使用控制器将数据模型和视图进行分离,也就是将视图和数据解耦。这样的好处是后端处理的数据模型和前端视图显示的数据格式无关,实现一个数据模型可以对应多个视图以不同的方式来展现数据,当数据模型或视图发生变化时,相互之间的影响也会降低到最低。

MVC中最重要的核心就是控制器,控制器与视图和模型相对独立,它起到一个负责分发请求和返回处理结果的作用,对请求和数据模型的处理一般由JavaBean负责。

MVC虽然需要程序员多写一些额外的代码,但它强制性地将视图和数据分开所带给我们的好处是毋庸置疑的。可以设想一下,在早期的JSP网页中,处理数据的代码和HTML展现的代码是混合在一起的,它们被完全耦合到一个文件中,程序逻辑也非常混乱,对后期程序的维护和扩展都是很大的问题。

3、Mybatis数据库开发框架

SSM开发框架的M就是Mybatis,Mybatis可以帮助开发人员更加方便地操作数据库,减少开发人员在数据库操作方面的编码工作量。下图是集成到Spring框架的Mybatis技术架构图。

架构图分为两部分:虚线框外的是Spring框架的业务逻辑处理类,它调用Mybatis的DAO接口发起对数据库的增删改查请求;虚线框内的是Mybatis框架部分,这部分包括DAO接口、DAO接口实现类Mapper、POJO实体类、SQL执行Executor类、SqlSession类。

一个用户登录业务访问数据库流程如下:用户通过JSP填写登录账号和密码后,JSP会发送登录请求到指定的Controller类,Controller类收到请求后,会调用登录业务类(Service类),登录业务类调用DAO类的登录接口,因为该接口被Mapper类实现,因此Mapper类的登录SQL代码会被执行,真正执行SQL代码的是Executor类,它创建SqlSession对象,由SqlSession对象访问数据库的用户表,并将访问结果返回给Mapper,Mapper类会根据接口的返回类型返回数据到登录业务类。

DAO接口声明了访问数据库的具体操作方法,在不对外暴露数据库访问细节的前提下提供数据库的增删改查方法,它不负责增删改查方法的具体实现,方法的具体实现由Mapper负责。这样做的好处时当数据库访问细节发生变化时,不会影响到业务逻辑类的改动。例如,当数据库访问细节发生变化时,只需修改Mapper代码就可以了,而Mapper代码是XML文件,因此无需重新编译整个系统。假如实现细节放在DAO类中,就需要修改DAO类的代码,修改DAO类的代码显然会影响到Service类的代码,即使没有影响,也需要重新编译整个系统。DAO接口由MyBaits自动生成,无需手动编写DAO接口代码。

Mapper是DAO的实现类,Mapper不是Java类,而是一个XML文件,访问数据库的SQL语句都是在Mapper中实现的,这些Mapper代码不需要你手动编写,完全由MyBaits自动生成。

POJO是实体类,主要是需要数据传递和序列化的类。例如与数据库表对应的Java类。POJO类也不需要手动编写代码,POJO类完全由MyBaits自动生成。

Exectuor类是执行SQL语句的类,Mapper所有的SQL语句都通过Exectuor类来执行,Exectuor类会创建一个SqlSession完成对数据库的操作。

Mybatis简单体现在开发人员建立数据库后,可以使用Mybatis自身提供的插件自动生成上图虚线框中的DAO接口类、Mapper实现类、POJO实体类的代码,开发人员不需要手动编写这些代码。只有在特殊SQL查询需求的情况下,才会扩展这些代码。下图是Mybatis代码自动生成原理图。

Mybatis代码自动生成插件需要从配置文件中读取数据库的访问地址、登录账号和密码,还需要从配置文件中读取数据库的哪些表需要生成POJO类、DAO接口类和Mapper实现类,以及这些类存储到什么位置。

文章来源于编程实践楼

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值