Spirng/Spring MVC篇面试题

Spirng/Spring MVC篇

1.为什么要使用 spring?

解决企业复杂应用的开发

spring是一个轻量级的控制反转和面向切面的框架

轻量:从大小和开销来说,spring都是轻量的,使用到的系统资源微乎其微

2.什么是ioc?

控制反转:不是一种技术、是一种思想,指导我们设计出松耦合、更优良的程序,传统的是类内部主动创建依赖对象,从而导致类与类之间高耦合;现在是把创建和查找依赖对象的控制权交给容器,由容器进行注入组合对象,所以对象与对象之间是松耦合,这样也方便测试,利于复用

控制反正参考文章

3.什么是aop?

面向切面编程:允许通过分离应用中的业务逻辑与系统级服务进行内聚性开发。应用对象只实现他们应该做的。它们并不负责其他系统级关注点。而aop中的基本单元是Aspect(切面)

什么是切面

由pointcount和advice组成,包含了横切逻辑定义,也包括了连接点的定义。spring aop就是负责实施切面的框架,它将切面指定的横切逻辑编织到切面的连接点中

什么是切点

程序运行中的一些时间点

什么是通知

特定aspect所采取的动作joinpoint称为advice通知。spring aop使用一个advice作为拦截器,在joinpoint“周围”维护一系列拦截器

有哪些类型的通知

Before 在切点前执行

After Returning 在切点正常执行后执行

After Throwing 在切点抛出异常时执行

After 在连接点之后执行,无论是正常和异常都返回

Around 在连接点之前和之后执行

4.spring 有哪些主要模块?

核心容器,aop,web,数据访问集成、工具、消息和测试模块

5.spring常用的注入方式有哪些

构造方法注入

setter方法注入

注解注入

注入参考

6.spring 中的 bean 是线程安全的吗

容器本身并没有提供bean的线程安全策略,可以说spring容器中的bean不具备线程安全,具体还是要结合scope的bean去研究

7.spring支持几种bean的作用域

singleton、request、prototype、session、globalsession

参考

8.spring 自动装配 bean 有哪些方式

隐式的bean发现装置和自动装配

在java代码或者XML中进行显示配置

9.spring 事务实现方式有哪些

编程事务管理对基于POJO的应用来说是唯一选择。我们需要在应用中调用beginTransaction、commit、rollback等事务管理相关的方法,这就是编程事务管理

基于TransactionProxyFactoryBean的声明式事务管理

基于@Transactional的声明式事务管理

基于Apectj AOP配置事务

10.说一下 spring 的事务隔离?

脏读: 读取到用户未提交的数据

幻读:一个用户更新了数据库的某字段的所有状态为一致,另一个用户插入一条数据,但用户读取时发现有一条数据的状态没有更新,就是幻读

不可重复度:a用户用相同sql查询两次,查询期间没有进行ddl操作,返回数据行数不一致

11.说一下 spring mvc 运行流程?

  • 用户发送请求DispatchServlet,DispatchServlet对请求URL进行解析,得到请求资源标识符

  • DispatchServlet根据URI调用HandlerMapping获得该handler配置的所有相关对象,最后返回一个HandlerExcutionChain给DispatchServlet

  • DispatchServlet在选择一个合适的HandlerAdapter适配器,然后执行业务,返回ModeAndView,HandlerAdapter把模型返回给DispatchServlet

  • DispatchServlet把ModeAndView交给(已注册的)ViewResolver,然后返回一个具体视图给DispatchServlet

  • 渲染视图

  • 展示给用户

12.spring mvc 有哪些组件

  • DispatchServlet:中央控制器,把请求转发到具体的控制类

  • Controller:具体处理请求的控制器

  • HandlerMapping:映射处理器,负责映射中央处理器转发给处理请求控制器的映射策略

  • ModeAndView:服务处返回的数据和视图层的封装类

  • ViewResolver:视图解析器,解析具体的视图

  • Interceptors:拦截器,负责拦截我们定义的请求然后做处理工作

13.@RequestMapping 的作用是什么?

用来处理请求地址映射的注解,

总共有六个参数有

  • method和value,

method是请求的数据类型,有GET、POST、PUT、DELETE等,vaule具体的请求路径

  • consumes,produces,

consumes,指定处理请求的提交数据类型

produces,指定返回数据类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

  • params,headers

params,指定request中包含某些参数值,才让该方法处理

headers,指定request必须包含某些header值,才能让该方法处理请求

14.@Autowired 的作用是什么?

它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

默认安装类型匹配,配合@Qualifier 指定按照名称去装配bean

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值