SpringMVC流程
客户端发送请求到前端控制器,前端控制器DispatcherServlet接收客户端请求,并转发给处理器映射,处理器HandlerMapping解析请求对应的Handler,HandlerAdapter会根据Handler来调用真正的处理器开始处理请求,并处理相应的业务逻辑,处理器返回一个模型视图ModleAndView,然后视图解析器进行解析,返回一个视图对象,视图对象返回给前端控制器DispatcherServlet,然后渲染数据Moder 将得到的视图对象返回给用户。
Mybatis
封装了jdbc,支持用Java代码操纵数据库 省去了手写sql的麻烦 但是前提是配置文件中得写好sql
Mybatisplus
在mybatis基础上只做增强不做改变 可以避免许多重复工作
提供简单的增删改查操作 以及多条件分页查询等等,只支持单表
条件构造器
JDBC和Mybatis的关系
Mybatis封装了JDBC
说一说Spring
Spring是一个轻量级的容器框架,其核心就是IOD、DI、AOP
什么是依赖注入?几种方式?
使用注解@Autowired实现依赖注入;
只有被spring容器管理的对象才可以被依赖注入. 默认的条件下采用类型注入.如果有特殊需求也可以采用名称注入
方式:
构造器注入,将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。
setter方法注入,通过调用成员变量提供的setter函数将被依赖对象注入给依赖类。
接口注入,依赖类必须要实现指定的接口,然后实现该接口中的一个函数,该函数就是用于依赖注入。该函数的参数就是要注入的对象。
什么是IOC?
指控制反转。可以理解为,类的控制权移交给spring容器来完成,由spring控制生成(初始化)、调用等动作,类的(bean的)的控制权是通过set、构造函数、强制赋值这些方式交到spring容器的。
什么是AOP?
是面向切面编程,java中他是使用代理模式来实现的,我们可以理解为面向规则,面向规定的编程,这是种思想,他其实就是解耦的一种思想。
其核心是代理机制,分为JDK代理和CGlib代理两种
切面 = 切入点表达式 + 通知方法
通知方法
1. @Before(“pointcut()”)
2. @AfterReturning(“pointcut()”)
3. @AfterThrowing(“pointcut()”)
4. @After(“pointcut()”)
用作记录日志
5. @around环绕通知 可以控制目标方法是否执行. 环绕通知可以控制业务流转的过程!!!
切入点表达式
bean表达式
语法:@Pointcut("bean(类名)")
within表达式
语法:@Pointcut("within(包名.类名))
execution表达式
语法:@Pointcut("execution(返回值类型 包名.类名.方法名(参数列表))")
@annotation表达式 自定义注解
语法:@Pointcut("@annotation(自定义注解路径)")
作用:为原始对象增加额外功能,解耦,便于原始对象的维护
解释一下开箱即用
springBoot将繁琐的配置封装到某些jar包中. 该jar包中的文件已经完成了配置.引入即可使用.只需要少量的配置就可以获取其功能的方式 叫做 “开箱即用”
通过@EnableAutoConfiguration 启动自动化的配置,实现开箱即用,当主启动类启动,加载配置spring-boot-start-xxx的功能