文档章节

对ssm(spring,springmvc,mybatis)的了解总结

 咸鱼-李y
发布于 05/24 21:47
字数 1537
阅读 24
收藏 5

ssm框架现在是java web开发的三个主流框架 ,其实严格来算只算是两个框架,因为springmvc属于spring框架 ,是spring的一个mvc子框架

那么我们下面就来了解一下三大框架把

 

一 .Spring

spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。

spring主要的核心依赖有  beans  , code  , context  ,spel    这是spring里最基本的也是最核心的jar包(或者说是依赖)

spring有两个核心思想 (IOC (控制反转) , AOP(面向切面编程))

 

IOC (控制反转) :  控制反转就是一种思想 , 这个思想是怎么想的呢 , 就是对对象控制权的转移,从程序代码本身反转到了外部容器 。就是想把实体类 的生命周期交给spring去控制 , 让spring实现创建 ,实现初始化 , 实现销毁 . 这样就可以大大的免去在编写代码的过程中new一个对象 , 众所周知new 对象 是java代码编写里耦合性最大的一个事情 。

也说了IOC是一种思想 ,那么怎么把这种思想实现呢 ,如今比较流行的的方法是依赖注入 DI(Dependency Injection)

DI(依赖注入):是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。

两者的关系就是ioc是一种思想 ,而DI确实一种实现方式 ,这里介绍了IOC,那么下面再来说下spring的另外一个核心思想AOP

 

AOP(面向切面编程) : 面向切面编程是对OOP(面向对象编程)的完善和补充 。

面向切面是面向对象中的一种方式而已。在代码执行过程中,动态嵌入其他代码,叫做面向切面编程。

AOP采用一种称为“横切”的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中。

常见的使用场景有日志 ,事物管理以及数据库操作

实现的方式有schema和aspectJ ,后者比较好用

以上就是对spring的两个核心

动态代理原理:spring AOP采用动态代理来实现
(1)实现InvocationHandler接口

(2)创建代理类(通过java API)

Proxy.newProxyInstance(动态加载代理类,代理类实现接口,使用handler);

(3)调用invoke方法(虚拟机自动调用方法)

日志处理
 //调用目标对象
 method.invoke("目标对象","参数");
 日志处理

通过代理对象--(请求信息)-->目标对象---(返回信息)----> 代理对象

 

二 .springMVC

springmvc是spring的子框架,继承于spring框架 , 在ssm框架环境中,springmvc可以向上的扫描去用spring的东西,但是spring却不能扫描到springmvc里面去。

springmvc也是接收请求,返回响应 ,实际上也是一个servlet ,dispatchServlet。

1.性能比struts2好
2.简单、便捷,易学
3.和spring无缝衔接【IOC,AOP】
4.使用约定优于配置
5.支持Restful
6.异常处理,国际化,数据验证,类型转换等

 

springmvc的工作原理

用户对服务器发送请求,请求被前端控制器servlet DispatcherServlet(中央处理器)捕获,对请求URL进行解析,然后根据该URI,调用HandlerMapper(处理器映射器)获去该handler配置的所有相关的对象,然后根据获取的handler,选择一个合适的handlerAdapter(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法) 。 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
ViewResolver 结合Model和View,来渲染视图
将渲染结果返回给客户端。

springmvc和servlet的流程其实是差不多的,都是接受请求,返回响应

所有说springmvc真的是个非常简单好用的框架

 

 

三.mybatis

mybatis是目前非常流行的持久层框架,功能很强大,然而其实现却比较简单、优雅。

mybatis是一个半自动的orm框架,也还是需要自己去写sql语句

mybatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:

  1. 封装JDBC操作
  2. 利用反射打通Java类与SQL语句之间的相互转换

mybatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。

mybatis和大部分框架一样需要一个配置文件,如果是和spring整合的话则不怎么需要,当然如果要开启缓存的话还是需要 

然后需要mapper映射文件和dao层的类和方法所对应   , 在mapper里面写sql语句

 

单独的mybatis使用需要解析配置文件,然后去调用mapper里的sql语句

InputStream in = Resources.getResourceAsStream("MyBatis-config.xml");

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);

SqlSession session = factory.openSession();

  List<User> list =session.selectList("com.liy.dao.IUserDao.query");
        for (User user : list) {
            System.out.println(user);
        }
        
        session.close();

 

这是mybatis运用的步骤

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

粉丝 9
博文 45
码字总数 40101
作品 0
深圳
私信 提问
ZHENFENGSHISAN/perfect-ssm

Quick Start 项目简介 ssm系列 ssm-demo:Spring+SpringMVC+Mybatis+easyUI整合 perfect-ssm:RESTful API+redis缓存 ssm-cluster:前后端分离+集群部署 ssm-dubbo:dubbo服务化 ssm-micro-se......

ZHENFENGSHISAN
2017/09/18
0
0
ssm 框架总结

用 ssm 为框架做了一个系统的后台,今天做一下关于 ssm 的总结。 一、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-...

什么都不懂的小石
2018/01/01
0
0
Spring、SpringMVC、Mybatis整合之工程的搭建

SSM框架整合之环境配置部分 学习完了Spring、SpringMVC、Mybatis框架,我们就可以尝试系统将三者进行整合。整合并不复杂,我们只需要实现最基础的配置,即可轻松的掌握SSM框架是如何实际项目...

TyCoding
2018/08/31
0
0
SSM整合,个人总结和step

我最近才整合完SSM。 前段时间,分开学习了这三个框架,都是看某黄埔军校的视频,整合的部分没看视频,想自己做。 但是有一些部分自己没有能完成,主要是如何从spring容器里取出Application...

wzlhlhhh
2018/05/11
0
0
在mybatis和spring整合中使用spring的MapperScannerConfigurer 运行出错

@minidai 你好,想跟你请教个问题:在mybatis和spring整合中使用spring的MapperScannerConfigurer 运行出错 报错: DEBUG [main] - Initializing new StandardEnvironment DEBUG [main] - A......

渊兮
2016/05/20
681
1

没有更多内容

加载失败,请刷新页面

加载更多

适合钱包应用开发的ERC20代币数据集

Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java、Python、Php、NodeJs、C#等各种开发语言查询主流ERC20代币的相关...

汇智网教程
27分钟前
1
0
micro微服务 基础组件的组织方式

micro微服务 基础组件的组织方式 简介 micro是go语言实现的一个微服务框架,该框架自身实现了为服务常见的几大要素,网关,代理,注册中心,消息传递,也支持可插拔扩展。本本通过micro中的一...

魂祭心
54分钟前
4
0
简单的博客系统(三)使用Django的后台管理功能

Django新建项目和应用后,自带有后台管理功能,可直接使用 创建后台管理员账户 (demosite) E:\PycharmProjects\demosite>python manage.py createsuperuserUsername: adminEmail address:...

ZeroBit
今天
3
0
The /usr/local/mysql/data directory is not owned by the 'mysql' to '_mysql' user

20190720 经过前两天折腾环境,重装了 apache 和 mysql 之后,今天调试程序是突然发现,本机的 mysql 起不来了! 在启动面板上,显示有这样一行小字 (抱歉!光顾着解决问题,没有记录下来图片...

wwzzhh166
今天
4
0
centos安装增强功能出现kernel headers not found for target kernel解决办法

最近新安装一个centos虚拟机,在安装增强功能的时候出现了,kernel headers not found for target kernel的错误。特记下我的解决方案。 1.update kernel yum update kernel -y 2.Install the...

mbzhong
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部