当前位置: 首页 > article >正文

Java 面经之 Spring

[1]. Spring MVC工作流程说说?

  • Spring MVC的工作流程大概可以分为以下步骤:

  • 用户通过浏览器向服务器发送请求。

  • 请求会先到达Spring MVC的前端控制器(DispatcherServlet)。

  • DispatcherServlet收到请求后会调用处理器映射器(HandlerMapping),根据请求的URL找到对应的处理器(Handler),生成Handler对象以及处理器拦截器(HandlerIntercepter)一并返回给DispatcherServlet。

  • DispatcherServlet根据返回的信息选择合适的处理器适配器(HandlerAdapter)。

  • HandlerAdapter调用并执行Handler,Handler执行完成后,会给HandlerAdapter返回一个(数据和视图)ModelAndView对象。

  • HandlerAdapter又会将ModelAndView对象返回给DispatcherServlet。DispatcherServlet再将ModelAndView交给视图解析器(ViewResolver)进行解析,然后向DispatcherServlet返回具体的视图(View)。

  • DispatcherServlet对View进行渲染,将模型数据填充至视图中。

  • 渲染后的视图由DispatcherServlet返回给浏览器,最终用户看到的是处理后的页面内容。

[2]. 说一下Spring AOP

Spring AOP允许在不改变目标对象代码的前提下向目标对象添加额外的行为或功能,有助于将横切关注点业务逻辑分离,减少对业务代码的侵入,增强代码的可读性和可维护性。

它的实现主要是基于JDK动态代理CGLIB代理这两种代理方式。在Spring中,使用@Aspect注解来定义一个切面,通过@Pointcut来指定切点,然后使用@Before、@After、@Around等注解来定义通知。

常见的使用场景有日志记录事务管理安全控制性能监控

[3]. IO和NIO的区别?

Java中的IO(Input/Output)和NIO(New Input/Output)是用于处理数据传输的两种不同的API

IO是面向流的,以阻塞模式工作。NIO是面向缓冲区的,以非阻塞模式工作。

IO没有选择器机制,每个连接都需要一个线程来处理。NIO引入了选择器机制,一个线程可以处理多个连接。

IO适用于连接数量较少、对并发性能要求不高的场景。NIO适用于高并发、大数据量传输的场景。

[4]. 微服务知道吗?

微服务是一种软件架构设计模式,其中应用程序被分解为小型、自治的服务单元,每一个服务单元也都是一个微服务,具有独立的功能和责任,可以独立开发、测试、部署和扩展,并能使用轻量级通信机制相互通信。

[5]. Spring MVC和Spring Boot的区别?

Spring MVC是一个基于Servlet的Web框架,主要用于处理Web层的请求和响应,构建传统的Web应用程序。Spring Boot是一个简化Spring应用开发的框架,可以更加快速地构建和部署Spring应用程序。

Spring MVC需要手动配置大量xml文件或Java配置类,配置过程相对复杂;Spring Boot采用了约定优于配置的原则,将常见的配置项进行了默认设置,配置过程相对简单。

Spring MVC的项目通常打包成WAR文件并部署在Web服务器上,而Spring Boot的项目可以打包成可执行的JAR文件,通过内置的嵌入式服务器就可以运行应用程序。


http://www.kler.cn/a/419824.html

相关文章:

  • 从单一设备到万物互联:鸿蒙生态崛起的未来之路
  • 实时数据开发 | Flink的数据分区策略--物理分区操作
  • TCP、HTTP、RPC
  • 【Elasticsearch】04-RestAPI
  • 2024.12.2工作复盘
  • 服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例
  • 【Git系列】Git 提交记录过滤:排除特定关键词的实用指南
  • 【MySQL-6】MySQL的复合查询
  • 动态代理如何加强线上安全
  • 云服务器架构有什么区别?X86计算、Arm、GPU/FPGA/ASIC和裸金属全解析
  • 2024年通信网络与软件工程国际学术会议(ICCNSE 2024)
  • 嵌入式Linux之wifi配网脚本分析
  • 排序算法中稳定性的意义和作用
  • C++实现网格交易的例子
  • 设计模式- Java
  • nlp培训重点
  • 海外centos服务器如何更换yum镜像源
  • 07《缓存》计算机组成与体系结构 系列课
  • docker 怎么启动nginx
  • 【C语言】结构体(二)
  • thinkphp自定义分页组件
  • 【Leetcode】26.删除有序数组中的重复项
  • Centos7安装MySQL8.0详细教程(压缩包安装方式)
  • mac终端自定义命令打开vscode
  • kube-proxy的iptables工作模式分析
  • 如何使用Python进行下载对应的视频地址