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

Spring常见的面试问答题(一)

在面试过程中,Spring几乎是必问的几个点之一,特别是其中的IOC和AOP。

Spring常见的面试问答题

什么是Spring?

首先,Spring是一个生态,但是呢,这个生态里面又有个Spring Framework框架。

所以从Spring生态来说,它包含了Spring Framework、Spring MVC、Spring Boot,以及Spring Cloud,和一些其他的框架如Spring Gateway、Spring Security、Spring Data,还有最新出来的Spring AI。

从Spring Framework来说呢,它是一个IOC的容器框架,并包含了AOP切面和Rest Template接口请求等很多组件工具的框架。

它最核心的功能是IOC和AOP,其中IOC就是负责处理解决代码层跟层(例如:controller层和service层)之间的,对象的解耦问题。AOP切面是针对现有业务的一个没有痕迹的增强,面向切面编程。

Spring可以没有AOP等功能,但是一定不能没有IOC,这个是所有Spring生态的一个基础。

说说Spring的优缺点

Spring的优点

  1. 集成了很多的实用组件,例如AOP切面、Rest Template 接口请求工具(不用额外引入OkHttp和HttpClient)、异步调用。

  2. IOC容器管理对象,使我们对象与对象之间的耦合度极大程度的降低,也方便了我们去维护对象。

    例如

    • 我们需要将一个对象设置为单例,不用 Spring 呢,我们就需要去额外使用单例模式自己实现,自己维护,而在 Spring 里,只需要将这个对象设置为 bean (用@Component、@Service等)托管给IOC容器就行,因为Spring的IOC默认就是单例的。(DefaultListableBeanFactory类工厂里存在一个命名为beanDefinitionMap的Map集合,专门用来存放bean的定义信息,key --> beanName,value --> BeanDefinition对象)

    • 如果想将对象设为多例的,也很简单,只需要设置@Scope为prototype。

    • 想要将对象配置为懒加载,则只需要给它加上@lazy注解。

    Spring针对bean提供了很多的配置操作。

  3. Spring提供的AOP切面工具,可以在不改动原有业务代码的情况下,去对其做一个增强,可以大量减少我们的重复代码,同时也会提高我们的开发效率,和便于维护。

  4. Spring提供了一个声明式事务,@Transactional注解,可以让我们从繁杂的事务管理代码里面脱离出来。

  5. Spring集成了很多的开发框架,拥有很好的粘合度,集成能力非常强,只需要简单的配置一下即可。

  6. 提供了很多的底层扩展接口,供外部扩展。底层源码写的非常好,用到了很多的设计模式(工厂模式、单例模式等)和反射,看了之后受益匪浅。

Spring的缺点

在应用层面感觉没有缺点。

鸡蛋里挑骨头,Spring大而全,集成了这么多的框架、功能,是需要提供非常非常多的扩展点,这也就导致它的底层会非常的复杂,代码量也会非常的庞大,对于深入学习源码带来了很大的困难。

上层对外越简单,下层内部就会越复杂。

关注我,我将持续输出Java常用相关技术文章。
请添加图片描述

相关文章:

Spring常见的面试问答题(一)

在面试过程中,Spring几乎是必问的几个点之一,特别是其中的IOC和AOP。 Spring常见的面试问答题 什么是Spring? 首先,Spring是一个生态,但是呢,这个生态里面又有个Spring Framework框架。 所以从Spring生…...

STM32 之 SDRAM 详解

目录 前言 一、SDRAM 简介 二、SDRAM的组成原理 2.1存储单元阵列 2.1.1地址译码 2.1.2存储电容 2.2控制逻辑 2.2.1时钟同步 2.2.2命令解码 2.2.3模式寄存器 2.3数据输入 / 输出缓冲 2.3.1数据总线 2.3.2数据锁存 2.4刷新电路 2.4.1自动刷新 2.4.2自刷新 三、S…...

基于图神经网络的最大独立集问题的目标分支

文章目录 Abstract1 Introduction2 Related Work分支顶点选择图神经网络Abstract 分支归约方法结合了分支约束原则和归约规则,在处理以前无法管理的现实世界实例方面特别成功。分支策略决定下一个要在哪个顶点上进行分支。最近,最广泛使用的策略是选择最高度的顶点。 在这项…...

【Qt】事件过滤器

事件过滤器 在 Qt 中,⼀个对象可能经常要查看或拦截另外⼀个对象的事件,如对话框想要拦截按键事件,不让别的组件接收到,或者修改按键的默认值等。通过上⾯的学习,我们已经知道,Qt 创建了 QEvent事件对象之后…...

字符串转换为整数、整数转换为字符串

整数转换为字符串 sprintf()它的功能是将各种类型的数据格式化为字符串,并存储到一个字符数组中。 sprintf 是 C 语言标准库中的一个函数,用于将格式化的数据写入一个字符串中。它的用法与 printf 类似,但不同的是,printf 输出到…...

解决samba无权限创建文件问题

将我服务器利用samba工具映射到到电脑后,没有权限在特定的文件里写文件,比如在mcu这个文件夹里面没有写文件的权限。 查看mcu文件夹的用户属性,属于root属性。 rootzwzn2064-CVN-Z690D5-GAMING-PRO:/home/zwzn2064# ls -ll total 9714860 dr…...

Ribbon快速了解

Ribbon 一、Ribbon 介绍 Ribbon 是一个客户端负载均衡器,它是 Netflix 开源的一个组件,常与 Spring Cloud 一起使用。 二、Ribbon 的作用 客户端负载均衡 Ribbon 可以在客户端实现负载均衡,即在服务消费者端根据一定的算法从多个服务提供者实…...

SpringBoot闲一品交易平台

SpringBoot闲一品交易平台 #vue项目实战 #计算机项目 #java项目 SpringBoot闲一品交易平台通过运用软件工程原理和开发方法,借助Spring Boot框架,旨在实现零食交易信息的高效管理,提升用户的购物体验和满意度。 技术栈 开发语言:…...

基于SpringBoot的物流管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于JavaSpringBootVueMySQL的物流管理系统【附源码文档】、…...

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined

插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from pinia export const useCommonStore defineStore(pack-store, {state: (): State > ({wwInfo: {},globalData: {},timerLock: false, //是…...

负载均衡调度器--LVS

文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR的工作原理DR的特点:DR的网络配置1.配置负载均衡器2.配置后端服务器lo接口的作用 3.测试连接: DR的典型应用场景 TUN模式 L…...

TinyWebSever源码逐行注释(五)_ http_conn.cpp

前言 项目源码地址 项目详细介绍 项目简介: Linux下C轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器. 使用 线程池 非阻塞socket epoll(ET和LT均实现) 事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机…...

windows手工杀毒-寻找可疑进程之句柄

上篇回顾:windows手工杀毒-寻找可疑进程之内存-CSDN博客 上篇中我们介绍了如果通过进程的内存分析进程是否是可疑进程,主要是通过查看是否有可写可执行的内存页。也可以通过查看内存内容,看是否是可疑内容,不过这个可能需…...

java开发后端

1.BeanUtils.toBean 方法 它是一个常见的 Java 工具方法,用于将一个 JavaBean 对象转换为另一个 JavaBean 对象 FlowOrderDO flowOrder BeanUtils.toBean(createReqVO, FlowOrderDO.class); 这行代码使用了 BeanUtils.toBean 方法,它是一个常见的 Ja…...

Redis 的标准使用规范之数据类型使用规范

数据类型使用规范 提示:以下是本篇文章正文内容,可供参考 (1)、字符文本(STRING) 【建议】选型为简易文本类缓存 :比如普通的字符、文本、Json 结构 ,通常能起到加速读写和降低后端压力的作用。 【建议】…...

人工智能技术导论——基于产生式规则的机器推理

在引出本章的内容之前先介绍一个概念 知识 知识的概念 知识(Knowledge)是人们在改造客观世界的实践中形成的对客观事物(包括自然的和人造的)及其规律的认识,包括对事物的现象、本质、状态、关系、联系和运动等的认识…...

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录 官网简介支持多种协议无插件浏览器访问配置和管理应用场景 Podman 部署 Apache Guacamole拉取 docker 镜像docker-compose.yml部署 PostgreSQL生成 initdb.sql 脚本部署 guacamole Guacamole 基本用法配置 VNC 连接 Mac 电脑开启自带的 VNC 服务 官网 https://guacam…...

在Linux中从视频流截取图片帧(ffmpeg )

Linux依赖说明: 说明: 使用到的 依赖包 1. ffmpegsudo apt update sudo apt-get install ffmpeg2. imagemagick (选装) (检测图像边缘信息推断清晰度,如果是简单截取但个图像帧>用不到<)sudo apt-get install imagemagick备注: 指令及相关参数说明核心指令: (作用: 执…...

使用脚手架来创建 express 项目

使用脚手架&#xff08;scaffold&#xff09;可以快速搭建Express应用程序的基本结构。Express自身提供了一个官方脚手架工具叫做express-generator&#xff0c;它可以帮助你快速地生成一个包含基本文件结构的Express项目。 安装Express Generator 首先&#xff0c;你需要全局…...

单片机常用的软件架构

参考 9种单片机常用的软件架构...

当openclaw遇见ai:借助快马平台打造能理解内容的智能抓取命令

最近在开发一个叫openclaw的网页抓取工具时&#xff0c;发现单纯抓取网页内容已经不能满足需求了。很多时候我们需要对抓取的内容进行二次处理&#xff0c;比如自动摘要、分类、去噪等。这时候就想到了借助AI来增强工具的能力&#xff0c;正好发现了InsCode(快马)平台这个好帮手…...

避坑指南:PyTorch QAT模型部署时,你的推理结果为什么对不上?从量化参数到计算细节的排查思路

PyTorch QAT模型部署实战&#xff1a;量化推理结果异常的全链路诊断手册 当你的量化感知训练&#xff08;QAT&#xff09;模型在部署环节突然"翻车"——推理结果与训练时相差甚远&#xff0c;这种场景就像精心调制的咖啡在最后一刻被打翻。本文将带你深入量化模型的黑…...

别再只盯着EMD了!滚动轴承故障诊断,试试VMD和MCKD这些新方法(附Python代码对比)

滚动轴承故障诊断&#xff1a;VMD与MCKD的实战对比与Python实现 滚动轴承作为旋转机械的核心部件&#xff0c;其健康状态直接影响设备运行安全。传统经验模态分解&#xff08;EMD&#xff09;虽广泛应用&#xff0c;但在处理强噪声和非平稳信号时存在明显局限。本文将深入解析变…...

Axelspace 太空公司牵头联合体入选日本太空战略基金项目 “提升下一代地球观测卫星能力技术”

—— 通过卫星星座与航空器开展特定排放源二氧化碳排放与吸收监测&#xff0c;打造气候解决方案&#xff0c;开拓全新市场机遇 Axelspace 太空公司、明星电气株式会社、全日空控股株式会社及 JIJ 株式会社联合宣布&#xff0c;各方共同申报的技术研发项目成功入选日本宇宙航空…...

foobox-cn个性化定制:打造你的专属foobar2000音乐界面

foobox-cn个性化定制&#xff1a;打造你的专属foobar2000音乐界面 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 当你每天打开foobar2000时&#xff0c;是否希望看到的不只是一个播放器&#xff0c;…...

【深度解析】用 Superpowers 改造 AI 编码代理:从“快手实习生”到“有流程的工程师”

摘要 本文从 Superpowers 开源项目出发&#xff0c;拆解它背后的「AI 软件开发方法论」&#xff1a;如何通过技能&#xff08;Skills&#xff09;、子代理&#xff08;Sub-agents&#xff09;、规则&#xff08;Rules&#xff09;和 Git 工作流&#xff0c;让 AI 编码代理不再只…...

python基于flask的学生学业质量成绩分析系统演可视化大屏 大数据

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析可视化大屏设计大数据处理架构预警与决策支持技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 数据采…...

2026年项目管理工具选型指南:功能对比、适用场景与避坑建议

项目管理工具早已不只是任务看板&#xff0c;而是连接目标、需求、计划、资源、交付、知识与复盘的管理底座。本文选取 ONES、Tower、Jira、Asana、monday.com、ClickUp、Microsoft Planner、Smartsheet、Notion 九款主流项目管理工具展开评估&#xff0c;帮助企业中高层研发负…...

【以太网帧格式】

以太网帧格式一、顺序二、分析一、顺序 前导码 | 帧开始定界符 | 目的MAC | 源MAC | 类型&#xff08;长度&#xff09; | 数据字段 | 帧校验序列FCS3 &#xff08;以太网帧最小帧长&#xff1a;64 字节&#xff0c;最大帧长&#xff1a;1518 字节。&#xff09; 二、分析 1…...

实体店有没有必要做门店小程序?

在当前消费行为不断向线上延伸的背景下&#xff0c;实体店是否需要搭建门店小程序&#xff0c;已经成为很多经营者在数字化转型过程中必须面对的问题。实体店是否有必要做门店小程序&#xff0c;取决于其是否需要提升获客能力与用户复购效率。一、为什么会出现这个问题在实际经…...