什么是框架

1、什么是框架?

bd1f63028310869fd63bdefd1f69198f0ec.jpg

框架( Framwork )是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。它定义了整体结构,类和对象的分割,各部分的主要责任,类和对象怎么协作,以及控制流程。框架预定义了这些设计参数,以便于应用设计者或实现者能集中精力于应用本身的特定细节 因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事务处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。 框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。 软件为什么要分层? 为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦。

简而言之:框架就是一个应用程序的体系结构。结构已经确定,我们只需要完成业务逻辑即可。

Java构架师专题

2、什么是SSM框架。

SSM是Spring、SpringMVC、Mybatis的简称,用作Web项目。

在没有Spring的情况下,Web项目开发有什么问题呢?

当时的Java开发大量使用try...catch...finally...,因为Web开发需要频繁操作数据库,需要使用异常捕捉来控制业务逻辑,导致代码复杂。 很多时候一个对象非常复杂,这个对象需要大量其他对象最为自己的属性,比如吃饭,需要筷子、碗、桌子、米饭........因此软件测试要先创建筷子、碗、桌子、米饭,才能创建吃饭这个对象来测试。但是这些都不是测试人员所熟悉的,而是开发人员熟悉的,这大大提高了测试人员的工作量。 在过去的Java技术中,很多框架都具有侵入性,也就是必须使用当前框架所提供的类库才能实现一定的功能,这样就造成了软件对框架的依赖。 基于接口的编程时一种理念,强调OOD的设计理念,比技术实现更重要,因为实现是可以多样化的,但是如果没有一个好的设计理念,那么代码的可读性就会变得很差,从而导致大型项目开发难度高,后期难以开发、维护、和扩展。

 

  • Spring

Spring是Java世界中最成功的框架,它的成功源自于理念,而不是技术。

在Spring中,一切Java类都是资源,而资源都是Bean,容纳这些Bean的是Spring提供的IoC容器。Spring是基于Bean的编程。

并且,Spring技术并不是为了代替任何技术,而是将所有的技术整合起来。

Spring核心IoC控制反转。

“我”,充当主动角色,我喝水的时候,需要杯子,于是我new一个杯子来用。至始至终都是以“我”为中心。这就是控制“正”转。 控制反转,就是把杯子交给容器来管理,当“我”需要杯子的时候,去请求Spring给“我”一个杯子,“我”不再是控制方,而是请求者。控制权在容器手里,“我”依赖容器的资源。 资源交给“我”的过程,就是依赖注入。

假如入口类“我”是一家公司,“我”去找员工&员工提交简历给我,哪个对我有利?不要我去new,而是对象向IOC容器递交简历,我需要什么资源,IOC再交给我。

有没有一丝第三方劳务派遣的味道?主要是为了降低“我”的开销。

直观来说,我们不需要频繁地new对象了,Spring会读取配置文件把所有的类都放在容器中,需要的时候直接送上。

控制反转是一种通过描述(xml配置或者注解),再通过第三方去产生或者获取对象的方式。而对象内部依赖的复杂性也无需我们去考虑,容器给你提供的对象,必然是可用的。

 

  • SpringMVC

在早期的JavaWeb开发中,主要是JSP+JavaBean的模式,我们称之为Model1。

https://i-blog.csdnimg.cn/blog_migrate/cd554f755fa0211f3a6f1f8ab4df799b.jpeg

但是,JSP和Java之间出现了严重的耦合,Java和HTML也耦合在一起,开发者不仅仅要掌握Java,还要掌握高超的前端技术。

更可怕的是,页面前端和后端相互依赖,前端需要等待后端就绪,后端也依赖于前端完成,这样才能进行有效的测试。

并且,由于高度耦合,功能模块难以复用。

所以早期的MVC模型诞生了,Servlet+JSP+JavaBean流行起来。

用户的请求到达Servlet,Servlet作为控制器接受这个请求,再调度JavaBean,来对数据库进行持久化操作,然后把结果返回给JSP,这样的模式成为MVC模式。JavaBean是Model,Servlet是Controller,JSP是View。

这样的好处是,Controller和Model得到很好的分离,大量的Java代码得到复用。但是Controller和View还存在一定程度的耦合。而这个时候作为MVC经典框架Struts1和Struts2以及模型层Hibernate崛起了。

但是Struts是依赖于页面编程的 ,随着移动互联网的兴起,Web页面大部分采用Ajax请求,数据格式为JSON。这样对于JSP的耦合度大大降低,Struts已经不适合时代发展了。

而互联网时代性能是最重要的,不可优化SQL亦不灵活成为了Hibernate的不治之症。

而一直没有处理好的数据库事物编程,NoSql的强势崛起,当时的持久层框架都不能处理。

SpringMVC时代来临。

SpringMVC是一种基于Servlet的技术,其核心控制器为DispatcherServlet及相关组件,从名字上来看,它就是一个Servlet。

7c96af5fd2c19b1313d3343806ba10b49f5.jpg

根据我们对Servlet的了解,DispatcherServelt会拦截HTTP发过来的请求,在init阶段获取配置信息,得到统一的资源标识符(URL)和处理器(Handler)之间的映射关系。

为了灵活和功能增强,SpringMVC还增加了拦截器,可以在处理器执行前后加入自己的代码,这样就构成了处理器执行链条。

处理完毕后,根据上下文视图解析器定位视图,将数据模型渲染到视图中,最终完成对用户请求的响应。

SpringMVC的优势在于:

模型层被拆分为业务层(Service)和数据访问层(Dao),在Service下我们可以通过Spring的声明事物操作数据库访问层,在Service中还允许我们访问NoSql。 SpringMVC结构松散,在SpringMVC中可以使用JSON、JSP、XML、PDF等等就,满足平板、手机,页面的各类请求。


 

  • MyBatis

持久层是将业务数据存储到磁盘(持久存储)的一个层面,Mybatis就是一个持久层框架。

Mybatis的优点显而易见:

不屏蔽SQL,可以精确地定位SQL语句,也可以对Sql进行优化和改造,有利于互联网开发对性能的要求。

强大灵活的映射机制,提供动态SQL的功能,允许SQL组装,可读性可维护性好。

提供Mapper接口编程,只要一个接口和XML就能创建映射器,几乎省略了所有的JDBC代码,诸多框架API在Mybatis中消失,开发者集中精力在业务逻辑上。

6b935091bfa28f09c7f9a19ef4799d18e61.jpg

通过SqlSessionFactoryBuild从xml配置文件中构建出SqlSessionFactory。 SqlSessionFactory的实例直接开启一个SqlSession,再通过SqlSession实例获得Mapper对象并运行其映射的Sql语句,完成对数据库的crud和事物提交,之后关闭SqlSession。 SqlSession是单线程对象,非线程安全,是持久化的独享操作,底层封装了JDBC连接。

转载于:https://my.oschina.net/u/4162404/blog/3073775

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值