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即可。