SSM框架的定义
SSM框架是spring、spring MVC 、和mybatis框架的整合,是标准的MVC模式。
标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层。
pojo层
Plain Ordinary Java Object,也有人称其为model、domain、bean等,pojo层是对应的数据库表的实体类。
持久层:DAO层(mapper层)
作用:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。
Dao层首先设计的是接口,然后再Spring的配置文件中定义接口的实现类。
然后可以在模块中进行接口的调用来进行数据业务的处理。(不在关心接口的实现类是哪个类)
DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
服务层:servicec层
**作用:**Service层主要负责业务模块的逻辑应用设计。
设计接口然后再设计实类,然后再在Spring的配置文件中配置其实现的关联。(业务逻辑层的实现具体要调用到自己已经定义好的Dao的接口上)这样就可以在应用中调用Service接口来进行业务处理。
建立好Dao之后再建立service层,service层又要在controller层之下,因为既要调用Dao层的接口又要提供接口给controller层。每个模型都有一个service接口,每个接口分别封装各自的业务处理的方法。
表现层:controller层
**作用:**负责具体的业务模块流程的控制。
配置也同样是在Spring的配置文件里面进行,
调用Service层提供的接口来控制业务流程。
业务流程的不同会有不同的控制器,在具体的开发中可以将我们的流程进行抽象的归纳,设计出可以重复利用的子单元流程模块。
可以理解为一般理解中后端做控制的模块,利用注解向前端传数据和处理数据的部分就是controller层的。
view层
作用:主要和控制层紧密结合,主要负责前台jsp页面的表示。
可以理解为放前端页面的,前端一般是将后端传来的数据经过处理后利用框架显示到页面上的
Spring
bean
bean是是一种特定的对象类型,代表可重用的软件组件。
配置文件中普通的bean一般只需要定义id&class即可
bean的实例化有三种方式,最常用的是构造器实例化
bean的装配方式也有三种,最常用的是基于注解的装配方式
bean 的生命周期:实例化-依赖注入-初始化-使用-销毁
控制反转(IOC):是一种编程思想,也是一种设计原则,它将应用程序的控制权从应用程序代码中转移到了外部容器或框架中。在传统的编程模型中,应用程序负责创建和管理对象之间的依赖关系,而在 IOC 容器中,控制权被反转了,容器负责创建、配置、组装和管理对象之间的依赖关系。这种反转使得应用程序更加灵活、松耦合,并且更易于测试和维护。
**面向切面编程(AOP):**另一种编程思想,它通过在不同的切面(Aspect)上进行交叉关注点的模块化,使得程序的逻辑更加清晰、易于维护。AOP 可以用来实现横切关注点的重用,例如日志记录、事务管理、性能监控等。AOP 通过在程序运行时动态地将切面织入到应用程序的逻辑中,从而实现了与业务逻辑解耦的目的。
注:横切关注点:从每个方法中抽取出来的同一类非核心业务代码。
SpringMVC
什么是SpringMVC
**模型(Model):**模型代表应用程序的业务逻辑和数据,通常是通过 POJO(Plain Old Java Object)来表示的。模型负责处理应用程序的业务逻辑,处理数据,并且与数据库进行交互。
**视图(View):**视图负责向用户展示数据,并且与用户进行交互。在 Spring MVC 中,视图通常是一个 JSP 页面、HTML 页面、JSON 数据等,它们负责将模型中的数据渲染成用户可见的形式。
**控制器(Controller):**控制器负责接收用户的请求,调用相应的业务逻辑处理模型中的数据,然后将处理结果传递给视图进行渲染。在 Spring MVC 中,控制器通常是一个 Java 类,它使用注解或者配置来映射请求到相应的处理方法上。
Spring MVC 的请求处理流程
用户发送请求到DispacherServlet(分发器)
DispatcherServlet 调用 HandlerMapping 处理器映射器,将请求映射到具体的处理器(Controller)。
HandlerAdapter 处理器适配器根据处理器(Controller)执行相应的方法,并返回结果。
DispatcherServlet 将处理器(Controller)的执行结果封装成 ModelAndView 对象。
DispatcherServlet 调用 ViewResolver 视图解析器,将 ModelAndView 解析为具体的视图。
DispatcherServlet 使用 View 渲染视图,并将模型数据填充至视图中。
最终,DispatcherServlet 将响应返回给用户。
Mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
常见orm框架mybatis和hibernate 的区别
hibernate自动生成sql,开发效率高工作量小,但当存在多表关联时对sql查询支持较差
mybatis需要手动编写sql,但mybatis可以动态配置并优化sql
mybatis工作原理
1、读取mybatis配置文件,加载映射文件
2、构建sqlsessionfactory
3、构造sqlsession
4、执行sql命令,解析sql映射文件、执行sql语句(通过executor执行器、mappedstatement对象完成)
5、输入参数映射
6、输出结果映射