java重点学习-spring

news2025/1/11 11:18:09

三 spring

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

不是线程安全的

Spring框架中有一个@Scope注解,默认的值就是singleton,单例的。

因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决

3.2 什么是AOP,你们项目中有没有使用到AOP

AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

常见的AOP使用场景

记录操作日志、

●缓存处理

Spring中内置的事务处理

什么是AOP

面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取公共模块复用,降低耦合

你们项目中有没有使用到AOP

记录操作日志,缓存,spring实现的事务核心是:使用aop中的环绕通知+切点表达式(找到要记录日志的方法),通过环绕通知的参数获取请求方法的参数(类、方法、注解、请求方式等),获取到这些参数以后,保存到数据库

Spring中的事务是如何实现的

其本质是通过AOP功能,对方法前后进行拦截,在执行方法之前开启事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

3.3 Spring中事务失效的场景有哪些

① 异常捕获处理,自己处理了异常,没有抛出,解决:手动抛出

② 抛出检查异常,配置rolbackFor属性为Exception

③ 非public方法导致的事务失效,改为public

3.4 spring的bean的生命周期

3.5 Spring中的循环引用

循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于A·

循环依赖在spring中是允许存在,spring框架依据三级缓存已经解决了大部分的循环依赖

① 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象

② 二级缓存:缓存早期的bean对象(生命周期还没走完)

③ 三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象的

3.6 构造方法出现了循环依赖怎么解决?

A依赖于B,B依赖于A,注入的方式是构造函数

原因:由于bean的生命周期中构造函数是第一个执行的,spring框架并不能解决构造函数的的依

赖注入

解决方案:使用@Lazy进行懒加载,什么时候需要对象再进行bean对象的创建

public A(@Lazy B b){

System.but.println("A的构造方法执行了..");

this.b = b ;

}

3.7 SpringMVC的执行流程

(版本1:视图版本,jsp)

  • ① 用户发送出请求到前端控制器DispatcherServlet
  • ② DispatcherServlet收到请求调用HandlerMapping(处理器映射器)
  • ③ HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet,
  • ④ DispatcherServlet调用HandlerAdapter(处理器适配器)
  • ⑤)HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
  • ⑥ controler执行宁成返可ModelAndView对象
  • ⑦ HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
  • ⑧)DispatcherServet将ModelAndView传给ViewReslover(视图解析器)
  • ⑨ViewReslover解析后返回具体View(视图)
  • ⑩ DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)
  • ⑩ DispatcherServlet响应用户

(版本2:前后端开发,接口开发)

  • ① 用户发送出请求到前端控制器DispatcherServlet
  • ② DispatcherServet收到请求调用HandlerMapping(处理器映射器)
  • ③ HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet.
  • ④ DispatcherServlet调用HandlerAdapter(处理器适配器)
  • ⑤ HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
  • ⑥ 方法上添加了@ResponseBody
  • ⑦ 通过HttpMessageConverter来返回结果转换为JSON并响应

3.8 springboot自动配置原理

3.9 Spring 、SpringMVC 、Springboot的常见注解有哪些

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

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

相关文章

基于纠错码的哈希函数构造方案

一、前言 随着大数据时代的到来,交通数据量急剧增加,由此带来的交通安全问题日益凸显。传统的驾驶人信用管理系统在数据存储和管理上存在着诸多不足之处,例如中心化存储方案无法有效地进行信用存证及数据溯源。区块链技术以其去中心化和不可…

移动硬盘无法访问怎么修复?

移动硬盘是一种方便的存储设备,但有时可能会遇到无法访问的问题。这不仅影响工作效率,还可能导致数据丢失。本文将详细介绍在Windows系统中移动硬盘无法访问怎么修复,帮助您恢复数据和硬盘功能。 移动硬盘无法访问的常见原因 硬盘故障&#…

1998-2023年上市公司金融/信贷/资本资源错配程度数据(含原始数据+计算代码+结果)

1998-2023年上市公司金融/信贷/资本资源错配程度数据(含原始数据计算代码结果) 1、时间:1998-2023年 2、来源:上市公司年报 3、指标:证券代码、year、应付账款、负债合计、利息支出、行业代码、是否ST或PT、上市日期…

Scott Brinker:Martech中的AI会让买家体验更好还是更糟?这取决于…….

Martech中的AI会让买家体验更好还是更糟? 你怎么知道自己正处于炒作周期的顶峰?当手段大于目的。 Martech专业人士和营销运营领导者正被推动将人工智能应用于营销——将其用于任何事情!——相信人工智能的自动化和加速,尤其是生…

通过EasyExcel设置自定义表头及设置特定单元格样式、颜色

前言 在项目开发中&#xff0c;我们会遇到各种文件导出的开发场景&#xff0c;但是这种情况并都不常用&#xff0c;于是本人将自己工作中所用的代码封装成工具类&#xff0c;旨在记录工具类使用方法和技术分享。 实战代码 导出效果&#xff1a; 1、导入依赖 <dependency&g…

开发指南058-JPA多数据源

一般情况下&#xff0c;一个微服务只链接一个数据库&#xff0c;但是不排除有些情况下需要链多个库。链多个库比较复杂&#xff0c;介绍如下&#xff1a; 1、nocas中要配置多数据源 白框内为正常的单数据库情况。下面增加标识&#xff08;可以任意起&#xff0c;这里为eva)&…

Maven入门:自动化构建工具的基本概念与配置

一、什么是Maven 目前无论使用IDEA还是Eclipse等其他IDE&#xff0c;使用里面 ANT 工具帮助我们进行编译&#xff0c;打包运行等工作。Apache基于ANT进行了升级&#xff0c;研发出了全新的自动化构建工具Maven。 Maven使用项目对象模型&#xff08;POM-Project Object Model&…

ARM基础---编程模型---ARM汇编

一、编程模型 1.1.数据和指令集 1.数据 ARM 采用的是32位架构。 ARM 约定:Byte &#xff1a; 8 bits Halfword &#xff1a; 16 bits (2 byte)Word : 32 bits (4 byte)Doubleword 64-bits&#xff08;8byte&#xff09;&#xff08;Cortex-A处理器&#xff09; 2.指令 ARM…

红日靶场vulnstack (三)

环境搭建 直接把靶机下载下来后&#xff0c;配置环境如下&#xff0c;直接Centsos配置多一张网卡NAT模式就行。 //只有这两台主机IP和图片不同&#xff0c;其它都是一样的&#xff0c;因为图片是拿别人的 kali&#xff1a;192.168.145.171 Centos&#xff1a;192.168.145.130…

https和harbor仓库跟k8s

目录 https 做证书 harbor仓库 https https是加密的http&#xff0c;它的端口是443&#xff0c;它的协议是tcp协议。建立连接和普通的tcp是一样的&#xff0c;都是三次握手和四次挥手&#xff0c;但是它三次握手之后有一个步骤&#xff1a;SSL或者TLS握手的过程&#xff0c…

DAMA数据管理知识体系(第4章 数据架构)

课本内容 4.1 引言 概要 数据架构考虑方面 数据架构成果&#xff0c;包括不同层级的模型、定义、数据流&#xff0c;这些通常被称为数据架构的构件数据架构活动&#xff0c;用于形成、部署和实现数据架构的目标数据架构行为&#xff0c;包括影响企业数据架构的不同角色之间的协…

vue3+ts 实现模板表格文件下载~

1、效果图&#xff1a; 2、创建点击事件&#xff0c;并发起请求&#xff0c;获取模板表格文件下载url地址。 //组件 <a-button class"btn btn_width" click"download"> 下载模板 </a-button>// 文件模板下载 import { getTemplate } from /ap…

JAVA读写Excel(jxl,poi,easyExcel)

目录 一、需求描述 二、具体操作Excel的常用方法 方法一&#xff1a; 使用jxl 方法二&#xff1a; POI 方法三&#xff1a;EasyExcel 三、总结 一、需求描述 前端有时候会传送 Excel 文件给后端&#xff08;Java&#xff09;去解析&#xff0c;那我们作为后端该如何实现…

Linux内核源码-USB驱动分析

基础层次详解 通用串行总线&#xff08;USB&#xff09;主要用于连接主机和外部设备&#xff08;协调主机和设备之间的通讯&#xff09;&#xff0c;USB 设备不能主动向主机发送数据。USB 总线采用拓扑&#xff08;树形&#xff09;&#xff0c;主机侧和设备侧的 USB 控制器&a…

《亿级流量系统架构设计与实战》第十二章 评论服务

评论服务 一、概述二、单级评论模式1、模型设计2、分库分表必要性3、高并发问题 三、二级评论模式1、模型设计2、评论审核与状态3、按照热度排序4、评论读取流程图5、架构总览 四、盖楼评论模式1、数据库递归查询2、数据库保存完整楼层3、图数据库 内容总结自《亿级流量系统架构…

关于IDEA的快捷键不能使用的原因

有时候IDEA的快捷键用不了&#xff0c;这时应该是快捷键发生冲突了&#xff0c;重新设置一下即可。以批量修改变量名称的shift f6为例&#xff08;我的这个快捷键用不了&#xff09;&#xff1a; 初始的rename的快捷键为shift f6 这个快捷键是冲突的&#xff0c;所以我们需要…

探索PDF的奥秘:pdfrw库的神奇之旅

文章目录 探索PDF的奥秘&#xff1a;pdfrw库的神奇之旅背景&#xff1a;为何选择pdfrw&#xff1f;pdfrw是什么&#xff1f;如何安装pdfrw&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;pdfrw在实际工作中的应用常见问题与解决方案总结 探索PDF的奥秘&#xff1a;p…

安防监控视频平台LntonAIServer视频智能分析平台新增视频质量诊断功能

随着安防行业的快速发展&#xff0c;视频监控系统已经成为维护公共安全和个人隐私的重要工具。然而&#xff0c;由于各种因素的影响&#xff0c;视频流的质量可能会受到影响&#xff0c;从而导致监控效果不佳。为了解决这一问题&#xff0c;LntonAIServer推出了全新的视频质量诊…

基于.NET6的WPF基础总结(下)

目录 一、集合控件 1. ListBox可选项列表 2. ListView数据列表控件 3. DataGrid数据表格控件 4. ComboBox下拉框控件 5. TabControl 6. TreeView 树形控件 7. Menu菜单 8. ContextMenu上下文菜单 二、图像控件 1. Ellipse 椭圆 2. Line线段 3. Rectangle矩形 4.…

如何打造中小学在线教学平台?Java SpringBoot集成Vue,教育资源管理新篇章

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…