Spring面试题——第二篇

1. ApplicationContext通常的实现是什么

FileSystemXmlApplicationContext: 此容器从一个XML文件中加载beans的定义,XML Bean配置文件的全路径名必须提供给他的构造函数。
ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里需要正确设置classpath,因为这个容器将从classpath里找bean配置。
WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个Web应用的所有beans。

2. 什么是Spring IOC容器

Spring IOC容器负责创建对象、管理对象(通过依赖注入),装配对象、配置对象,并且管理这些对象的整个生命周期。
BeanFactory接口提供了一个先进的配置机制,使得任何类型对象的配置称为可能。ApplicationContext接口对BeanFactory进行了扩展,在BeanFactory的基础上添加了其他功能,比如和Spring的AOP更容易集成,也提供了处理message resource(国际化)的机制。
针对Web应用的WebApplicationContext是org.springframework.beans.factory.BeanFactory的Spring IOC容器的具体实现。BeanFactory接口是Spring IOC容器的核心接口。

3. BeanFactory和ApplicationContext有什么区别

BeanFactory可以理解为含有bean集合的工厂类
从表面上看,ApplicationContext和BeanFactory一样具有Bean定义、bean关联关系的设置,根据请求分发bean的功能,但是ApplicationContext在此基础上还提供了其他功能。

  • 提供了支持国际化的文本消息。
  • 统一的资源文件读取方式
  • 已在监听器中注册的bean的事件。

4. Spring 支持的几种Bean的作用域(scope)

  • singleton: bean在每个Spring IOC容器中只有一个实例
  • prototype:一个bean的定义可以有多个实例
  • request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
  • session:在一个Http Session中,一个bean定义一个实例,该作用域仅在基于web的Spring ApplicationContext情形下有效。
  • global-session: 在一个全局的HTTP Session中,一个bean定义一个实例,该作用域仅在基于web的Spring ApplicationContext情形下有效。

缺省的Spring bean的作用域是singleton

5. Spring、SpringMVC、Spring Boot有什么区别

  1. Spring
    Spring最重要的特征是依赖注入。所有Spring Modules不是依赖注入就是IOC控制反转。恰当的使用DI或者IOC的时候,可以开发松耦合应用。
  2. Spring MVC
    Spring MVC提供了一种分离式的方法来开发Web应用,通过运用像DispatcherServlet、ModelAndView、ViewResolver等简单概念,开发Web应用将会变的非常简单。
  3. Spring Boot
    Spring和Spring MVC的问题在于需要配置大量的参数,而Spring Boot通过一个自动配置和启动的项来解决这个问题。为了更快的构建产品就绪应用程序,Spring Boot提供了一些肺功能性特征。

6. Spring Boot的核心注解是哪个?由哪几个注解组成

核心注解@SpringBootApplication,由三个注解组成

  • @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  • @ComponentScan: Spring组件扫描

7. SpringBoot自动配置原理是什么

自动配置依赖@EnableAutoConfiguration注解开启自动配置功能。

  1. 从配置文件META_INF/spring.factories加载可能用到的自动配置类。
  2. 去重,将exclude、excludeName属性携带的类排除。
  3. 过滤,将满足条件(@Conditional)的自动配置类返回。

8. SpringBoot的自动配置是如何实现的

SpringBoot项目的启动注解是:@SpringBootApplication,其实他是由下面三个注解组成

  1. @Configuration
  2. @ComponnetScan
  3. @EnableAutoConfiguration

其中@EnableAutoConfiguration是实现自动配置的入口,该注解又通过@Import注解导入了AutoConfigurationImportSelector,在该类中加载META-INF/spring.factories的配置信息。然后筛选出以EnableAutoConfiguration为key的数据,加载到IOC容器中

9. Spring Boot和Spring Cloud的区别

Spring Boot专注于快速方便的开发单个个体微服务。

Spring Cloud是关注全局的微服务协调整理治理框架,将Spring Boot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理等等集成服务。

10. Spring Cloud核心组件及其作用,以及SpringCloud工作原理

Spring Cloud由以下几个核心组建构成:
Eureka:各个服务启动时,EurekaClient都会将服务注册到Eureka Server中,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里。
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡。
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求url,发起请求。
Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。
zuul: 如果前端、移动端要调用后端系统,统一从zuul网关进入,由zuul网关转发请求给对应的服务。

11. Spring Cloud实现服务注册和发现的原理是什么

  1. 服务在发布时指定对应的服务名(服务名包括了IP地址和端口号),将服务注册到注册中心(Eureka或者zookeeper)这一过程是Spring Cloud自动实现的,只需要在main方法添加@EnableDiscoveryClient即可,同一个服务修改端口就可以启动多个实例。
  2. 调用方法:传递服务名称通过注册中心获取所有的可用实例,通过负载均衡策略调用对应的服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145594.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用VMware安装Linux操作系统

使用VMware安装Linux操作系统。以Cont OS为例进行说明。 准备工作: 下载并安装VMware: 下载地址:https://support.broadcom.com/ 下载好VMware,就是吧下载好的VMware安装,只需要“下一步”就行,只是到路径…

惠海H6118 DC-DC 降压恒流芯片30V36v40V48V降12V9V24V36V 1.2A大电流 调光降压芯片IC舞台灯

H6118是一款连续电感电流导通模式的降压型LED恒流驱动器,用于驱动一个或多个LED灯串。H6118工作电压从4V到30V,提供可调的输出电流,最大输出电流可达到1.2A。 H6118内置功率开关管,采用高端电流检测电路,支持PWM模式调…

即时通讯框架MobileIMSDK的H5端开发快速入门

► 相关链接: ① MobileIMSDK-H5端的详细介绍② MobileIMSDK-H5端的开发手册new(* 精编PDF版) 一、技术准备 您是否已对Web端即时通讯技术有所了解? 1)新手入门贴:史上最全Web端即时通讯技术原理详解2&…

提前解锁 Vue 3.5 的新特性

Vue 3.5 是 Vue.js 新发布的版本,虽然没有引入重大变更,但带来了许多实用的增强功能、内部优化和性能改进。 1. 响应式系统优化 Vue 3.5 进一步优化了响应式系统的性能,并且减少内存占用。尤其在处理大型或深度嵌套的响应式数组时&#xff…

【论文阅读】Grounding Language with Visual Affordances over Unstructured Data

Abstract 最近的研究表明,大型语言模型(llms)可以应用于将自然语言应用于各种各样的机器人技能。然而,在实践中,学习多任务、语言条件机器人技能通常需要大规模的数据收集和频繁的人为干预来重置环境或帮助纠正当前的…

unix中如何查询和修改进程的资源限制

一、前言 一个进程在运行时,会用到各种资源,比如cpu的使用时间、内存空间、文件等等。那么,一个进程能够占用多少资源呢?cpu使用的时间有多长?进程空间有多大?能够创建多少个文件?这个就是本文…

【数据结构】设有一带头结点的单链表,编程将链表颠倒过来。要求不用另外的数 组或结点完成。

编程题: 设有一带头结点的单链表,编程将链表颠倒过来。要求不用另外的数 组或结点完成。 分析: 该算法通过维护三个指针(prev、curr 和 next)逐步遍历单链表,实现链表的逆转。在遍历过程中,curr 的 next 指针被更新为指向 prev,逐步反转指向。最终,头结点的 next 指针…

用户态缓存:高效数据交互与性能优化

目录 1. 用户态缓存区工作背景 1.1 为什么每条连接都需要读写缓存区 1.1.1 读缓存区(Read Buffer) 1.1.2 写缓存区(Write Buffer) 1.2 用户态缓存区的工作流程 1.3 用户态缓存区的重要性 2. UDP 和 TCP 的设计差异 2.1 UD…

Python模块和包:标准库模块(os, sys, datetime, math等)②

文章目录 一、os 模块1.1 获取当前工作目录1.2 列出目录内容1.3 创建和删除目录1.4 文件和目录操作 二、sys 模块2.1 获取命令行参数2.2 退出程序2.3 获取 Python 版本信息 三、datetime 模块3.1 获取当前日期和时间3.2 日期和时间的格式化3.3 日期和时间的运算 四、math 模块4…

私有化聊天软件成为企业内部通讯新趋势

在数字化转型浪潮的推动下,企业对于高效、安全、灵活的内部通讯需求日益增长。传统的电子邮件、电话会议等沟通方式已难以满足现代企业对即时性、协作性和信息安全性的要求。因此,私有化聊天工具作为企业内部通讯的定制化解决方案,正逐渐成为…

我的数据库第一课:从懵懂到启迪

我的数据库第一课:从懵懂到启迪 前言 在数字化浪潮席卷全球的今天,数据库作为IT技术的“活化石”,已经成为不可或缺的基础设施。特别是在国内,随着经济的飞速发展和信息化建设的推进,数据库技术也经历了从无到有、从…

企业微信用户授权与校验完整对接流程

Hello!欢迎各位新老朋友来看小弟博客,祝大家事业顺利,财源广进!! 主题:企业微信用户授权与校验完整对接流程 一:构造第三方应用授权链接 如果第三方应用需要在打开的网页里面携带用户的身份信息…

解锁数字转型新纪元:Vatee万腾平台,您的智能加速与策略智库

在数字经济时代的大潮中,企业的数字化转型已不再是选择题,而是必答题。面对这一挑战,Vatee万腾平台以其卓越的技术实力和前瞻性的战略视野,成为了众多企业加速数字化转型、实现智能化升级的得力助手和智囊团。 加速转型&#xff…

个人量化成功之路-----用代码一键画图Donchian Channel(唐奇安通道指标)

Donchian Channel(唐奇安通道指标)是用于交易突破的最古老、最简单的技术指标之一。是由Richard Donchian 提出的一个由三条线(上阻力线、下支撑线、中心线)组成的通道指标。 一般来说,唐奇安通道的宽度越宽&#xff0…

ISSCC34.7解析一种具备内存编码与刷新功能的eDRAM查找表数字存内计算芯片

一、引言 1. DCIM概述 数字存内计算(Digital Computing-in-Memory, DCIM)是一种将计算操作直接集成到存储单元中的新兴计算架构。传统计算模型(冯诺依曼架构)中的计算和存储是分离的,数据必须频繁在存储器和处理单元…

FastDFS的docker部署及实现头像上传

FastDFS的使用并实现头像上传 一、FastDFS概述二、安装FastDFS1. 拉取镜像2. 安装tracker3. 安装storage4. NGINX服务启动三、配置和依赖配置依赖四、头像上传一、FastDFS概述 概述 上传交互过程 两个服务:Tracker Server 和Storage Server Tracker Server 跟踪服务,负责调…

UNRAID系统忘记密码解决办法

前言 unraid系统自己通过命令修改密码以后,怎么也进不去了。 这次带来如何重置密码 操作

着色器 简介

着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间…

C语言进阶【5】---数据在内存中的存储【2】(小数存储很难吗?)

本章概述 本章引要练习 浮点数的存储浮点数的取出小补充题目解析彩蛋时刻!!! 本章引要 常见的浮点数:3.1415,1E10等。其中,1E10是科学计数法的形式,它也就等于1*10^10。小数数据类型&#xff1…

猫头虎 分享已解决Bug || Uncaught (in promise) ReferenceError: proxy is not defined 解决方案

🐯 猫头虎 分享已解决Bug || Uncaught (in promise) ReferenceError: proxy is not defined 解决方案 今天猫头虎带您探讨一个开发中常见但让人头疼的错误:Uncaught (in promise) ReferenceError: proxy is not defined。 很多前端开发者在工作中都会遇…