SSM框架详解
SSM介绍
SSM(Spring、SpringMVC和Mybatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。
标准的SSM框架有四层:
- 持久层:dao层(mapper)
作用:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。
dao层首先设计的是接口,然后在Spring的配置文件中定义接口的实现类。
然后可以在模块中进行接口的调用来进行数据业务的处理(不在关心接口的实现类是哪个类)。
数据源的配置以及有关数据库连接的参数都在Spring的配置文件中进行配置。 - 业务层:service层
作用:service层主要负责业务模块的逻辑应用设计。
先设计接口,然后再设计实现类,然后再在Spring的配置文件中配置其实现的关联。(业务逻辑层的实现具体要调用到自己已经定义好的Dao的接口上)这样就可以在应用中调用Service接口来进行业务处理。
建立好Dao之后再建立service层,service层又要在controller层之下,因为既要调用Dao层的接口又要提供接口给controller层。每个模型都有一个service接口,每个接口分别封装各自的业务处理的方法。 - 表现层:controller层
作用:负责具体的业务模块流程的控制。
配置也同样是在Spring的配置文件里面进行,调用Service层提供的接口来控制业务流程。
业务流程的不同会有不同的控制器,在具体的开发中可以将我们的流程进行抽象的归纳,设计出可以重复利用的子单元流程模块。 - view层
作用:主要和控制层紧密结合,主要负责前台jsp页面的表示。
各层之间的联系
dao和service层这两个层都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势,controller和view层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。
使用Spring实现业务对象管理,使用Spring MVC负责请求的转发和视图管理,Mybatis作为数据对象的持久化引擎。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。
Spring的核心思想是IoC(反转控制)和DI(依赖注入)。
IoC(反转控制)是不再需要程序员去显式地“new”一个对象,而是让Spring框架来帮我们完成这一切。
DI(依赖注入)就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
MyBatis
Mybatis是对JDBC的封装,它让数据库底层操作变得透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。
Mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的SQL语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行SQL命令。
系统架构
一、Spring详解
Spring是一个基于IOC和AOP的结构J2EE系统的框架。
IOC(Inverse Of Control,控制反转 或 反转控制)是Spring的基础,简单说就是创建对象由以前的程序员自己new构造方法来调用,变成了交由Spring创建对象。
DI(Dependency Inject,依赖注入)就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。
1、控制反转(IOC)
控制反转,就是指将对象的创建,对象的存储(map),对象的管理(依赖查找,依赖注入)交给了spring容器。(spring容器是spring中的一个核心模块,用于管理对象)
只需要将类提前配置在spring配置文件中,就可以将对象的创建交给spring容器,当需要对象时,不需要自己创建,而是直接通过spring获取即可,省去了new对象,可以降低代码之间的耦合性。
IOC如何实例化对象?
<bean id="user" class="com.tedu.pojo.User">
Spring容器执行过程:
当tomcat服务器启动时会加载Spring容器的配置文件.当程序解析到Bean标签时.通过反射机制实例化对象.对象最终保存到了Spring容器自身维护的Map<Id,Object对象>
知识点:反射机制调用对象的无参构造实例化对象.
2.5 DI依赖注入
依赖注入,即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。
简单来说,所谓的依赖注入其实就是,在创建对象的同时或之后,如何给对象的属性赋值。
set方式注入:
创建User类,声明name和age属性,并添加对应的setter和getter方法,以及toString方法
在applicationContext.xml中声明User类的bean实例
修改applicationContext.xml中User实例的声明,为User实例注入属性(或者在applicationContext.xml中,将UserInfo对象作为值,赋值给User对象的userInfo属性)
构造方法注入:
为User类声明构造函数
2、修改applicationContext.xml文件,将set方式修改为构造方法注入。
1.准备空的web项目
2.在web.xml中配置Spring容器
3.在web.xml中配置SpringMVC核心控制器
4.整合MyBatis与Spring
中央仓库网址 https://mvnrepository.com/
公共仓库地址(阿里公共仓库)
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
本地仓库:本地文件夹