首页 > 编程语言 >java面试题--Spring

java面试题--Spring

时间:2023-04-25 10:47:46浏览次数:30  
标签:面试题 ModleAndView -- Spring REQUIRED 事务 当前 DispatcherServlet

一、Spring、SpringMVC、SpringBoot的区别是什么?

二、????

三、SpringMVC工作流程是什么?

1、DispatcherServlet接收请求,将请求发给HandlerMapping;

2、HandlerMapping根据请求url,匹配到要处理的handler,并包装成处理器执行链,返回给DispatcherServlet。

3、DispatcherServlet根据处理器执行链中的处理器,找到能执行该处理器的HandlerAdapter。

4、HandlerAdapter调用对应的Controller。

5、Controller执行代码,返回ModleAndView给HandlerAdapter。

6、HandlerAdapter将ModleAndView返回给DispatcherServlet。

7、DispatcherServlet拿到ModleAndView并交给ViewResolver处理。

8、ViewResolver将ModleAndView处理成View对象,发给DispatcherServlet。

  9、 DispatcherServlet 调用视图对象,让其自己 (View) 进行渲染(将模型数据填充至视图中),形成响应对象 (HttpResponse)。

  10.、前端控制器 (DispatcherServlet) 响应 (HttpResponse) 给浏览器,展示在页面上。

四、Spring的事务传播机制是什么?

  1. REQUIRED:默认的传播特性。当前存在事务,则加入事务。当前不存在事务,则新建一个事务。
  2. SUPPORTS:当前存在事务,则加入事务。当前不存在事务,则以非事务方式执行。
  3. MANDATORY:当前存在事务,加入事务。不存在事务,则抛出异常。
  4. REQUIRED_NEW:新建一个事务。如果当前存在事务,则挂起当前事务。
  5. NOT_SUPPORTED: 以非事务方式执行。如果当前存在事务,则挂起当前事务。
  6. NEVER: 不使用事务。如果当前事务存在,则抛出异常。
  7. NESTED:如果当前存在事务,则在嵌套事务中执行,否则和REQUIRED的操作一样。

NESTED和REQUIRED_NEW的区别? 

NESTED和REQUIRED的区别?

五、Spring框架中的单例bean是线程安全的吗?

六、Spring框架中使用了哪些设计模式及应用场景?

七、Spring事务的隔离级别有哪些?

read uncommited,   read commited,  repeatable read,  serialilzable

在进行配置的时候,如果数据库和Spring代码中的隔离级别不同,那么以Spring的配置为主。

八、Spring事务的实现方式原理是什么?

  1. 编程式事务。
  2. 声明式事务@Transactional。利用Spring的AOP,动态代理添加了@Transactional的类。在方法开始前,开启一个事务。如果方法执行结束后,没有抛出异常,则提交事务,如果有异常,则回滚事务。

九、Spring事务什么时候会失效?

  1. bean对象没有被Spring容器管理。
  2. 方法的访问修饰符不是public。
  3. 自身调用问题。只调用该类自己的方法,不会创建代理类,所以事务失效。
  4. 数据源没有配置事务管理器。
  5. 数据库不支持事务。
  6. 异常被捕获,捕获后出现异常,事务不会回滚。
  7. 异常类型错误或者配置错误。

 十、如何实现一个IOC容器?

十一、说说对AOP的理解? 

AOP全称面向切面编程,它是为解耦而生的。 

十二、为什么hashMap扩容的时候是两倍?

  1. 初始容量为2的幂数,扩容后的容量也是2的幂数,则元素在新表中的位置,要么不动,要么满足新位置=原位置+原长度。
  2. 容量为2的幂数,在进行&位运算时,可以减少hash碰撞,是元素均匀的散布在map中。

 

 

 

  

 

标签:面试题,ModleAndView,--,Spring,REQUIRED,事务,当前,DispatcherServlet
From: https://www.cnblogs.com/aleda-territory/p/17319204.html

相关文章

  • 虚拟机文件系统损坏
    问题描述linuxwindows问题原因问题影响问题解决问题确认修复虚拟机磁盘linux操作系统修复准备修复镜像通过下载的镜像/磁盘镜像启动新的kvm虚拟机,将故障虚拟机磁盘挂载到系统进行修复启动虚拟机,进行修复验证使用ISO修复需注意windows操作系统修复下载windowsiso镜像从镜像启......
  • linux中查看Python版本和路径
    1,查看python版本,输入python2,查看python路径,输入whereispython ......
  • Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案
    Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)常用的两款AI可视化交互应用比较:GradioGradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,......
  • linux批量处理脚本
    1.批量Killps-ef|grepjava|grep-vgrep|awk'{print$2}'|xargskill-92.统计进程数ps-ef|grepjava|grep-vgrep|awk'{print$2}'|wc3.批量打开防火墙端口1#!/bin/sh2ports=$13echo"$ports"4IFS=''5rea......
  • Mesh网络
    Mesh网络即”无线网格网络”,是“多跳(multi-hop)”网络,是由adhoc网络发展而来,是解决“最后一公里”问题的关键技术之一。在向下一代网络演进的过程中,无线是一个不可缺的技术。无线mesh可以与其它网络协同通信,是一个动态的可以不断扩展的网络架构无线Mesh网络是一种新无线局域网类......
  • 【20230424】logstash生产开发总结汇总
    logstash生产开发总结汇总本文主要讲使用Logstash生产开发操作、遇到问题及处理时间:20230424logstash版本:logstash7.8.1官网:https://www.elastic.co/cn/logstash/目录logstash生产开发总结汇总一、基础开发简单的启动脚本字段过滤解析Json嵌套时间转换类templa......
  • docker跨主机容器访问docker+weave
    这玩意是真的折磨,不难,但是网上的教程太杂了,坑太多了。需求现在有两台服务器,里面部署了两台docker,此时我想要用Adocker里面的容器去访问Bdocker里面的容器。1.A主机192.168.159.140#安装weave#先下载wget-O/usr/local/bin/weavehttps://raw.githubusercontent.com/zettio......
  • Ceph性能测试总结
    Ceph性能测试总结测试目的:通过对ceph集群块接口常见性能指标进行简单测试,达到以下几个目的:了解当前集群配置方案对硬件性能的利用情况;验证集群性能计算公式的正确性;识别集群性能瓶颈点;为后续性能优化提供部分参考;测试指标:块接口IOPS,带宽,时延硬盘性能一般使用以下几个......
  • github~通过packages功能实现maven仓库托管
    github在被大微软收购之后,推出了很多非常不错的功能,这一次把很多仓库管理合并到一起了,包括了nuget,npm,maven,docker等等,今天我们把java代码推到github的maven仓库吧!申请一个githubtoken建立一个仓库,起名为maven_repo配置你的.m2/settings.xml文件<settingsxmlns="http://......
  • 配置python虚拟环境的路径
    1配置环境变量WORKON_HOME:我是将以后虚拟环境都放在G:\pyEnvs方便管理2.修改windows环境下mkvirtualenv.bat文件(我的是G:\Python3.7.4\Scripts\mkvirtualenv.bat,),配置虚拟环境根目录地址然后修改第24行【set"venvwrapper.default_workon_home=%USERPROFILE%\Envs"】这里......