首页 > 其他分享 >Spring八股

Spring八股

时间:2024-11-20 17:20:34浏览次数:1  
标签:八股 调用 Spring Bean 依赖 处理器 DispatcherServlet

Spring

Spring框架核心特性

IoC容器,AOP,事务管理,MVC框架

Spring IOC 实现机制

反射,依赖注入,设计模式 - 工厂模式,容器实现

Spring AOP 实现机制

Spring AOP的实现依赖于动态代理技术
基于JDK的动态代理
基于CGLIB的动态代理

依赖倒置

高层模块不依赖低层模块,它们共同依赖同一个抽象

如果让你设计一个SpringIoc,你觉得会从哪些方面考虑

Bean的生命周期管理
依赖注入
Bean的作用域
AOP功能的支持
异常处理
配置文件加载

动态代理是什么?

Java的动态代理是一种在运行时动态创建代理对象的机制,主要用于在不修改原始类的情况下对方法调用进行拦截和增强

AOP实现有哪些注解

反射具有以下特性:

运行时类信息访问,动态对象创建,动态方法调用,访问和修改字段值

spring是如何解决循环依赖的

三级缓存
实例化 Bean:Spring 在实例化 Bean 时,会先创建一个空的 Bean 对象,并将其放入一级缓存中
属性赋值:Spring 开始对 Bean 进行属性赋值,如果发现循环依赖,会将当前 Bean 对象提前暴露给后续需要依赖的 Bean(通过提前暴露的方式解决循环依赖)。
初始化 Bean:完成属性赋值后,Spring 将 Bean 进行初始化,并将其放入二级缓存中。
注入依赖:Spring 继续对 Bean 进行依赖注入,如果发现循环依赖,会从二级缓存中获取已经完成初始化的 Bean 实例。

Spring的事务什么情况下会失效

未捕获异常,非受检异常,事务传播属性设置不当,多数据源的事务管理,跨方法调用事务问题,事务在非公开方法中失效

Spring的事务,使用this调用是否生效?

不能生效。

Bean的生命周期

Spring启动,查找并加载需要被Spring管理的bean,进行Bean的实例化
Bean实例化后对将Bean的引入和值注入到Bean的属性中
如果Bean实现了BeanNameAware接口的话,Spring将Bean的Id传递给setBeanName()方法
如果Bean实现了BeanFactoryAware接口的话,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入
如果Bean实现了ApplicationContextAware接口的话,Spring将调用Bean的setApplicationContext()方法,将bean所在应用上下文引用传入进来。
如果Bean实现了BeanPostProcessor接口,Spring就将调用他们的postProcessBeforeInitialization()方法。
如果Bean 实现了InitializingBean接口,Spring将调用他们的afterPropertiesSet()方法。类似的,如果bean使用init-method声明了初始化方法,该方法也会被调用
如果Bean 实现了BeanPostProcessor接口,Spring就将调用他们的postProcessAfterInitialization()方法。
此时,Bean已经准备就绪,可以被应用程序使用了。他们将一直驻留在应用上下文中,直到应用上下文被销毁。
如果bean实现了DisposableBean接口,Spring将调用它的destory()接口方法,同样,如果bean使用了destory-method 声明销毁方法,该方法也会被调用

Spring 只帮我们管理单例模式 Bean 的完整生命周期

Spring bean的作用域有哪些?

Singleton(单例),Prototype(原型),Request(请求),Session(会话) ,Application,WebSocket,Custom scopes

Spring容器里存的是什么?

在Spring容器中,存储的主要是Bean对象。

MVC分层

视图(view),模型(model): 代表一个存取数据的对象或 JAVA POJO,控制器(controller): 用于将用户请求转发给相应的 Model 进行处理

Spring MVC的工作流程如下:

用户发送请求至前端控制器DispatcherServlet
DispatcherServlet收到请求调用处理器映射器HandlerMapping。
处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作
执行处理器Handler(Controller,也叫页面控制器)。
Handler执行完成返回ModelAndView
HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
DispatcherServlet将ModelAndView传给ViewReslover视图解析器
ViewReslover解析后返回具体View
DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)。
DispatcherServlet响应用户

HandlerAdapter:负责调用处理器(Controller)来处理请求
HandlerMapping负责将请求映射到处理器(Controller)

怎么理解SpringBoot中的约定大于配置

自动化配置,默认配置,约定优于配置

SpringBoot自动装配原理

基于Spring Framework的条件化配置和@EnableAutoConfiguration注解实现
SpringBoot 在启动时会扫描外部引用 jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器

@EnableAutoConfiguration: 这个注解是 Spring Boot 自动装配的核心

spring-boot-starter-web:这是最常用的起步依赖之一,它包含了Spring MVC和Tomcat嵌入式服务器,用于快速构建Web应用程序

Mybatis里的 # 和 $ 的区别?

Mybatis 在处理 #{} 时,将 SQL 中的 #{} 替换为 ? 号,在执行 SQL 时会为预编译 SQL 中的占位符(?)赋值
Mybatis 在处理 ${} 时,只是创建普通的 SQL 语句,然后在执行 SQL 语句时 MyBatis 将参数直接拼入到 SQL 里

微服务常用的组件

注册中心,负载均衡,服务通信,配置中心,集中式日志管理,服务保护

负载均衡有哪些算法

简单轮询,加权轮询,简单随机,加权随机,一致性哈希,最小活跃数

服务熔断

当调用链路的某个微服务不可用或者响应时间太长时,会进行服务熔断,不再有该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路

服务降级

为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息

标签:八股,调用,Spring,Bean,依赖,处理器,DispatcherServlet
From: https://www.cnblogs.com/nowiam/p/18558846

相关文章

  • JVM八股
    JVMJVM的内存结构元空间,Java虚拟机栈,本地方法栈(虚拟机栈执行Java方法,本地方法站执行native方法),程序计数器,堆内存,直接内存JVM内存模型里的堆和栈有什么区别栈主要用于存储局部变量、方法调用的参数、方法返回地址以及一些临时数据栈中的数据具有确定的生命周期,当一个方法调用......
  • 操作系统八股
    操作系统用户态和内核态内核态(KernelMode):CPU可以执行所有的指令和访问所有的硬件资源。有更高的权限用户态(UserMode):CPU只能执行部分指令集,无法直接访问硬件资源安全性,稳定性,隔离性线程和进程进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位线程组之间......
  • 并发编程八股
    并发编程保证数据的一致性事务管理,锁机制,版本控制线程的创建方式继承Thread类,重写其run()方法,调用start()方法启动线程实现Runnable接口,重写run()方法,调用start()方法启动线程实现Callable接口与FutureTask使用线程池(Executor框架)停止一个线程的运行异常法停止:线程......
  • 计网八股
    计网网络OSI模型和TCP/IP模型OSI网络模型主要有7层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层TCP模型应用层,传输层,网络层和网络接口层tcp在传输层ip在网络层HTTP、HTTPS、CDN、DNS、FTP都是应用层协议用同一个TCP连接来发送和接收多......
  • springboot汽车租赁智慧管理-计算机毕业设计源码96317
    目 录第1章引 言1.1选题背景1.2研究现状1.3论文结构安排第2章系统的需求分析2.1系统可行性分析2.1.1技术方面可行性分析2.1.2经济方面可行性分析2.1.3法律方面可行性分析2.1.4操作方面可行性分析2.2系统功能需求分析2.3系统性需......
  • Spring学习笔记_41——@RequestBody
    @RequestBody1.介绍@RequestBody是Spring框架中用于处理HTTP请求的一个非常关键的注解。它主要用于将客户端发送的HTTP请求体中的JSON、XML或其他格式的数据转换到Java方法参数上,这个转换过程通常需要一个消息转换器(MessageConverter),如MappingJackson2HttpMe......
  • springboot农产品小程序-计算机毕业设计源码31670
    摘要 近年来,电子商务的快速发展引起了行业和学术界的高度关注。农产品小程序旨在为用户提供一个简单、高效、便捷的新鲜农产品购物体验,它不仅要求用户清晰地查看所需信息,而且还要求界面设计精美,使得功能与页面完美融合,从而提升系统的可操作性。因此,我们需要深入研究信息内......
  • springboot高校心理咨询管理系统-计算机毕业设计源码31814
    摘 要本论文主要探讨了基于SpringBoot的高校心理咨询管理系统的设计与实现。随着高校心理健康教育的重要性日益凸显,一个高效、便捷的心理咨询管理系统对于提升高校心理咨询服务的质量和效率至关重要。本文首先分析了高校心理咨询管理的现状和需求,然后详细阐述了系统的整......
  • [免费]SpringBoot+Vue毕业设计论文管理系统【论文+源码+SQL脚本】
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue毕业设计论文管理系统,分享下哈。项目视频演示【免费】SpringBoot+Vue毕业设计论文管理系统Java毕业设计_哔哩哔哩_bilibili项目介绍现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为......
  • java高频面试题(八股文)
    基础/集合1.ArrayList/LinkedList有什么区别?1、数据结构: 在数据结构上,ArrayList 和 LinkedList 都是 “线性表”,都继承于 Java 的 List 接口。另外 LinkedList 还实现了 Java 的 Deque 接口,是基于链表的栈或队列,与之对应的是 ArrayDeque 基于数组的栈或队......