SSM框架简单理解

SSM框架简介

SSM框架主要由Spring和Mybatis两个框架整合在一起的,SpringMVC是Spring中的一个模块。这是一个轻量级的框架,易于上手和使用,学习成本低,是继SSH之后的比较主流的JavaEE企业级框架

一、Spring框架

Spring译为“春天”,也就是说程序员的春天到来了(个人理解)。
Spring是一个开源的轻量级的Java开发框架,于2003年兴起,目的是为了解决企业级应用开发项目的复杂性。Spring中主要包含IOC(控制反转)和AOP(面向切面)容器,这是Spring中的两个核心技术。

1、IOC(控制反转)

IOC全称Inversion of Control,翻译过来就是控制反转。在之前我们在创建对象时都是通过关键字new来创建,使用IOC之后就不用我们自己来创建了,我们会把这个任务交给一个容器来创建,在我们需要对象实例时直接在容器中取即可,即控制反转就是将创建对象的工作交给容器来创建。

2、AOP(面向切面)

AOP全称Aspect Oriented Programming,翻译过来就是面向切面。在编写代码的过程中,经常会遇到一些重复的代码,比如说日志打印,这种重复的工作,这样每次用的时候都需要重新写一遍,很麻烦。为了解决这些问题,我们使用了AOP(面向切面编程),使用切面的方式在指定的地方执行指定的代码,我们只需要写一遍,后面想在哪儿用直接就可以用,不需要再次编写。

AOP专业术语
1)、连接点(Joinpoint)

连接点就是用来指定这段代码在什么地方运行。

Spring仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛出异常时以及方法调用前后这些程序执行点织入增强。

2)、切入点(Pointcut)

切入点就是在连接点的基础上进行一定的过滤,每个类都拥有多个连接点,这时使用切入点来定位到特定的连接点,相当于数据库查询时的查询条件。

XML文件配置方式:

    <aop:config>
    	<!-- 切入点可以有多个 -->
        <aop:pointcut id="myPointcut" expression="execution(* com.kaka.spring.aop.aspect.service.UserService.*(..))"/>
    </aop:config>

expression是指定切入点

3)、通知(Advice)

切面在某个具体的连接点采取的行动或行为,称之为通知切面的核心代码和逻辑都写在通知中,通知是切面功能的具体实现,比如日志、验证等。

通知类型

前置通知

切入点方法执行之前执行的方法@Before

后置通知

相当于Java中的try/cath中的finally,不论前面执行结果如何,都 会执行的方法 @After:执行后执行,有没有日常都执行。

环绕通知

切入点前后都执行 @Around

异常通知

切入发点方法执行异常后执行的方法@AfterThrowing:切入点里面的出现异常如10/0,才会执行的方法。

返回通知

切入点方法执行之后执行的方法@AfterReturning:可以得到切入点执行的返回值,有异常后就不执行

XML配置方式

    <bean id="myMethodBeforeAdvice" class="com.kaka.spring.aop.advice.MyMethodBeforeAdvice"/>
    <aop:config>
        <!--①. 切入点(可以有多个) -->
        <aop:pointcut id="myPointcut" expression="execution(* com.kaka.spring.aop.aspect.service.UserService.*(..))"/>
        <!-- ②.各种通知(可以有多个,并且可以加在不同的切入点上) -->
        <aop:advisor advice-ref="myMethodBeforeAdvice" pointcut-ref="myPointcut" />
    </aop:config>
4)、通知器(Advisor)

通知器由一个切入点(pointcut)和一个通知(Advice)组成。

<aop:advisor advice-ref="myMethodBeforeAdvice" pointcut-ref="myPointcut" />
5)、切面(Aspect)

类是对物体特征的抽象,切面就是对横切关注点的抽象。与通知器(advisor)类似都是通知+切入点。区别在于,切面中的类无需实现通知接口,但需要在配置文件中指定类中的方法名。

XML配置方式

    <bean id="myXmlAspect" class="com.kaka.spring.aop.aspect.MyXmlAspect"/>
    <aop:config>
        <!--①. 切入点(可以有多个) -->
        <aop:pointcut id="myPointcut" expression="execution(* com.kaka.spring.aop.aspect.service.UserService.*(..))"/>
        <!--②. 切面(可以有多个) -->
        <aop:aspect ref="myXmlAspect">
            <!--切点与切面中的方法关联 -->
            <aop:around method="aroundMethod" pointcut-ref="myPointcut"/>
        </aop:aspect>
    </aop:config>
6)、目标(Target)

目标就是被通知的对象

7)、代理(Proxy)

一个类被AOP增强后,就产生一个结果代理类。也就是向目标对象应用通知之后创建的对象。

二、Mybatis框架

mybatis是一个用Java编写的持久层框架,它使用ORM实现了结果集的封装。
ORM是Object Relational Mapping 对象关系映射。简单来说,就是把数据库表和实体类及实体类的属性对应起来,让开发者操作实体类就实现操作数据库表。
它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等烦杂过程。

三、SpringMVC

SpringMVC的组成部分:

1、DispatcherServlet

中央处理器,负责对各部分进行任务分发

2、HandlerMapping

处理器映射器:接收到前端控制器发送的url后,对url进行匹配,返回给前端控制器一个处理器执行链(HandlerExecuteChain)

3、HandlerAdaptor

处理器适配器:接收到前端控制器要寻找的Handler,选择对应的Handler进行执行,执行后返回ModelAndView给前端控制器

4、Handler

处理器:执行处理器适配器发送的任务,返回ModelAndView给处理器适配器

5、Viewresolver

视图解析器:接收前端控制器发送来的逻辑视图(ModelAndView),转换为真正的视图,返回给前端控制器供其渲染

6、View

视图:经过视图解析器生成的视图(如JSP、Excel、PDF等等),经前端控制器渲染后发送到请求方

SpringMVC工作流程如下图:

在这里插入图片描述

四、SpringBoot

简化了Spring框架搭建及开发过程,使用特定的方式来配置,创建了独立的spring引用程序main方法启动,SpringBoot内嵌了Tomcat,无需配置和部署war包,简化了maven的配置。简单来说,去繁从简,大大的简化了企业级开发过程。

五、Mybatis-plus

mybatis-plus是一个mybatis的增强工具,在mybatis的基础上只做增强,不> 做修改,为简化开发,提升效率而生。

在使用mybatis时,写sql是使用额mapper.xml配置文件编写,编写后在数据访问层(dao)还需要编写对应的接口以及抽象方法,抽象方法名与mapper.xml配置文件中对应sql的name值要相同。

在需要操作的表过多时,对应的mapper.xml也会增多,而mybatis-plus就很好的解决了这些问题。

mybatis-plus它将一些简单的sql语句封装,不需要开发人员在mapper.xml配置文件手动编写sql,只需要继承BaseMapper这个接口就能直接使用。

在需要进行复杂的或多表联查时只需要在数据访问层(dao)接口里编写抽象方法,加上对应的注解,在注解中写sql即可。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值