SSM

什么是SSM框架?

SSM是Spring+Spring MVC+Mybatis的缩写,主流的Java EE企业级框架。

其中,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,可以帮助我们创建对象。

Spring MVC控制开发,让开发简单规范。

MyBatis是一个基于Java的持久层框架,封装了增删改查操作。

Spring

看到这个,很多人会和你说什么控制反转(IoC),依赖注入(DI)、AOP、事务什么……对新手来说,这些是什么鬼呢?

控制反转

我不写定义,就说一下你的电脑。你的电脑上有usb口吧,有hdmi口吧。电脑上用什么键盘,不取决于电脑本身,而是插在usb上的键盘是什么?这个能理解吧。你看控制电脑用什么输入的设备并不是由电脑控制的,而是你插入的键盘是什么来控制的。这个控制不就反了吗?

依赖注入

就是控制反转。电脑的输入设备依赖它被插入的是什么键盘。插入机械键盘,输入设备就是机械键盘,插入数字键盘就只能输入数字。从插键盘这个事来说:无非是从电脑角度看,是依赖注入,输入设备是什么依赖注入的键盘是什么;从键盘角度看是控制反转,插入的键盘来控制电脑是什么输入设备。

为什么要用依赖注入?目的就是可以灵活搭配。如果你的电脑上的键盘是焊死在电脑上的,键盘坏了,你的电脑也废了。你肯定不想这样吧。

Java开发中,我们需要创建大量的对象,有些重要的对象牵一发而动全身,这样的对象我们可以交给Spring帮我们来创建,我们只需要提供配置文件,这个配置文件可以是xml,也可以是java本身。好比Spring是个工厂,按图纸就可以做出产品。

AOP

什么是切面?你可以这样想:一个公司有多个销售部,都需要行政帮忙搞定日常的订文具、机票、办公室、出差酒店什么的,都需要财务搞定报销、收付款什么的事务吧,要仓库帮忙发货什么的。不可能每个销售部都去招几个行政、财务和仓管什么吧,销售部门只要做好业务就行了,订文具什么的事情交个专门的部门去办就行。

在Spring AOP 中,把这些公共的事务,也就是这个例子中的行政啊、财务啊、仓管啊,看成一个个切面,让你的开发的时候,专注于核心业务。

事务

说个例子:比如我支付宝转给你100块钱,正常操作应该是我的账号里少了100,你的多了100。如果由于各种原因,我少100后,系统出问题了。没有事务的话,你的账号不会多100,而我的账号少了100。这个就是有问题了。有事务的话:要不我少100你多100都成功,要不就都不成功,这样钱才不会少。而手写一个事务还是有点小难度的,Spring的事务(spring-tx)可以帮我们轻松实现。

三层架构

三层架构师指:视图层view,服务层service,持久层Dao,它们的功能是:

1.view层:用来接收用户请求的代码,比如请求如何分发;

2.service层:系统的业务逻辑主要写在这里,比如借书系统会有借书的业务;

3.Dao层:直接操作数据库的代码,之所以分Dao层,主要是可能相同的sql语句可能使用在比较多的地方,改动的时候可以理解为只改动一处即可。

为了降低耦合度,在这里,使用面向抽象编程,也就是上层对下层的调用,直接通过接口来完成,下层对上层的真正服务提供者,是下层实现的接口实现类,实现类是可以更换的,这就实现了层间的解耦合。

MVC与三层架构的区别

MVC架构里面的Controller以及View层合并在一起就是三层架构的View层,而MVC的Model层就包含了三层架构的Service层以及Dao层。

Java开发中常见包名的意义

Java:

  bean 实体类,对应数据库中的表,构造方法,属性,getter setter,toString()
  dao 持久层 数据库增删改查
  service 业务层
  controller 控制层 跳转哪里

resources:

  mapper dao实现类
  applicationContext.xml Spring的配置文档
  db.properties 数据库连接信息
  log4j.properties 日志配置文件
  springmvc.xml 配置springmvc

webapp:

  jsp等页面
  web-inf
  web.xml 加载过滤器 拦截器

原博客:https://www.cnblogs.com/SallyShan/p/12667057.html

原文地址:https://www.cnblogs.com/lyqf/p/13049742.html