1 springMVC框架的入口是哪个类?
调度器 dispatcherServlet
2 springMVC框架的工作流程
从上图可总结出 Spring MVC 的工作流程如下:
- 客户端请求提交到调度器DispatcherServlet;
- 由 DispatcherServlet调度器解析URL,通过映射处理器HandlerMapping解析映射地址,获得处理请求的Controller类对象;
- 调度器将请求提交到控制器Controller;
- Controller处理后,将结果封装成ModelAndView返回给dispatcherServlet;
- 调度器根据modleAndView获取对应的视图解析器ViewResolver ,找到指定的视图页面;
- 调度器将数据渲染到视图页面;
- 调度器响应视图显示到客户端;
3 spring框架的两大特性(⭐)
1 IOC——控制反转
2 AOP——面向切面编程
4 什么是IOC
IOC称为控制反转,就将创建对象的权力交给spring容器
spring框架提供了两种容器类:BeanFactory、ApplicationContext(默认)
5 spring中bean的作用域有几种?
- singleton(默认)——单例模式,一个bean只能创建一个对象,默认使用单例模式;
- prototype——原型模式,每次通过 Spring 容器获取 bean 时,都会创建一个 bean 实例;
- request——每次HTTP请求,容器都会创建一个bean实例且只在当前 HTTP请求内有效;
- session——同一个 HTTP Session 共享一个 Bean 实例;
- application——同一个 Web 应用共享一个 Bean 实例;
- websocket——在整个 WebSocket 中有效;
6 什么DI
DI称为依赖注入,可以通过数据类型或者名称从spring容器中获取类的对象
7 如何实现依赖注入?常用的依赖注入的注解有哪些?
使用注解的方式实现依赖注入,常用注解有@AutoWired、@Resource
8 @AutoWired、@Resource的区别是什么(⭐)
@Autowired 根据数据类型从spring容器中获取类对象
@Resource 优先根据名称注入,如果容器中没有指定名称的对象,则根据类型注入
9 什么是AOP?(⭐)
AOP指的是面向切面编程。
通过定义切面类,用来封装多个类的公共行为,将那些与业务无关,可以复用的代码封装起来,形成一个切面类的方法。通过定义切入点和通知方式来实现切面代码的织入。
优点是:减少系统的重复代码,降低模块间的耦合度。
应用场景:日志、监控、事务(环绕通知)
10 AOP有几种通知方法?
前置、后置、最终、环绕、异常通知
11 AOP使用了什么设计模式?
代理模式
12 什么是ORM
指的是对象关系映射,作用是在关系型数据库和类对象之间作一个映射,将字段和实体类的属性对应起来,让开发者通过操作实体类实现操作数据库表。
13 Mybatis中#{}与${}符的区别是什么(⭐)
#{}与${}都是从参数列表中取值
#{}是编译好SQL语句再取值,是经过预编译的,是安全的。
#{}引用参数的时候,Mybatis会把这个参数认为是一个字符串,并自动加上单引号''
${}是取值以后再去编译SQL语句;
${}是未经过预编译的,仅仅是取变量的值,是不安全的,存在SQL注入风险;
14 mybaits缓存的作用是什么?有几级缓存?(⭐)
缓存的作用(原理):在SQL和传入的参数完全一样的情况下,多次调用mapper方法,只会执行一次sql,第一次执行sql查询到的结果集会被保存在缓存中,后面重复调用mapper方法返回的是缓存中的结果集;
缓存的目的:提高对数据库查询的效率,减轻数据库查询压力,提高应用程序的性能;
一级缓存:默认情况下,只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。在一次会话中,调用 insert、update、delete 语句时,会话中的缓存会被刷新;
二级缓存:是Application(应用程序)级别的缓存,二级缓存默认是不开启的;二级缓存要求返回的POJO(简单java类)必须是可序列化的;
七 非关系型数据库——Redis
1 redis的特点
- redis是一个高性能的分布式内存数据库;数据以键值对的形式存储在内存中也支持持久化;
- redis默认有16个数据库;
- 是单线程的;
- reids的持久化方案有两种:RDB 和 AOF;
- redis可以用来做 高速缓存 和 分布式锁。
2 redis两种持久化方案的区别
RDB(快照) 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件(快照)。Redis 重启会通过加载dump.rdb文件恢复数据。
AOF(追加) 在Redis中默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
3 redis有几种数据类型
有5种:字符串string、哈希表hash、列表list、集合set、有序集合sortedSet
4 redis设置日期失效的命令是哪个
expire key seconds 单位是秒
5 redis哪个命令可以实现分布式锁
setnx key value 只有在key不存在时,设置 key 的值
6 set集合与sorted set有序集合的区别是什么
set集合中元素是无序且不可重复的;
sorted set中的元素是有序且不可重复的,每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的元素进行从小到大的排序;
八 springboot
1 启动类的注解是哪个?这个注解有什么特点?
启动类的声明注解是 @SpringbootApplication
该注解是一个组合注解,由三个注解组成:
@SpringBootConfiguration:声明当前类是一个配置类
@EnableAutoConfiguration:开启自动配置
@ComponentScan:配置组件类自动扫描
2 springboot框架的特点?
- 约定优于配置;(springboot有很多默认配置)
- 自动装配;(可以自动加载配置信息)
- 内置tomcat;
3 @RestController与@Controller注解的区别?
@RestController是由@Controller注解和@ResponseBody注解组合而成