Java开发框架和中间件面试题(3)

news2025/2/3 10:14:57
14.Spring事务中的隔离级别有哪几种?

 在TransactionDefinition接口中定义了五个表示隔离级别的常量:

    1⃣️ISOLATION  DEFAULT:使用后端数据库默认的隔离级别,Mysql默认采用的可重复读隔离级别;Oracle默认采用的读已提交隔离级别。

   2⃣️ISOLATION READ  UNCOMMITTED:最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读,幻读或不可重复读。

   3⃣️ISOLATION READ COMMITED:允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍可能发生。

   4⃣️ISOLATION REPEAABLE  READ:对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。

  5⃣️ISOLATION SERIALIZABLE:最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读,不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。

  15.Spring事务中有哪几种事务传播行为?

    在TransactionDefinition接口中定义了7个表示事务传播行为的常量。

      支持当前事务的情况:

         1.PROPAGATION  REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。

       2.PROPAFGATION  MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(mandatory:强制性)。

      3.PROPAGATION SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。

   不支持当前事务的情况:

     4.PROPAGATION   REQUIRES  NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。

   5.PROPAGATION  NOT   SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。

   6.PROPAGATION  NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。

   其他情况:

   7.PROPAGATION  NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于PROPAGATION REQUIRED。

16.BeanFactory和ApplicationContext有什么区别?

      ApplicationContext提供了一种解析文本消息的方法,一种加载文件资源(如图像)的通用方法,他们可以将事件发布到注册为监听器的bean。此外,可以在应用程序上下文中以声明方式处理容器中的容器或者容器上的操作,这些操作必须以编程方式与BeanFactory一起处理。

ApplicationContext实现MessageSource,一个用于获取本地化消息的接口,实际的实现是可插入的。

17.如何定义bean的范围?

  在Spring中定义一个类时,我们也可以为bean声明一个范围。他可以通过bean定义中的scope属性定义。例如,当Spring每次需要生成一个新的bean的实例时,bean的scope属性就是原型。另外一方面,当每次需要Spring都必须返回相同的bean实例时,bean的scope属性必须设置为singleton。

18.可以通过多少种方式完成依赖注入?

   1.构造函数注入

   2.setter注入

   3.接口注入

19.什么是SpringBoot?

    Springboot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要简化了使用Spring的难度,省简了繁重的配置,提供了各种启动器,开发者能够快速上手。

    1.用来简化Spring应用的初始化搭建以及开发过程,使用特定的方式来进行配置。

    2.创建独立的Spring引用程序main方法运行

    3.嵌入的tomcat无需部署war文件

    4.简化maven配置

    5.自动配置Spring添加对应的功能starter自动化配置

    6.SpringBoot来简化Spring应用开发,约定大于配置,去繁化简

20.为什么使用SpringBoot?

 1.独立运行

   SpringBoot内嵌了各种Servlet容器,Tomcat,Jetty等,现在不再需要打成war包部署到容器中,SpringBoot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。

 2.简化配置

   spring boot starter web 启动器自动依赖其他组件,减少了maven的配置。

3.自动配置

  SprintBoot能根据当前类路径下的类,jar包来自动配置bean,如添加一个Spring boot  starter  web启动器就能拥有web的功能,无需其他配置。

4.无代码生成和XML配置

Springboot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。

5.应用监控

Springboot提供一系列端点可以监控服务以及应用,做健康检测。

21.Spring、SpringMVC和Springboot有什么区别?

  1.Spring

  Spring最重要的特征是依赖注入。所有Spring Modules不是依赖注入就是IOC控制反转。

  当我们恰当的使用DI或者IOC的时候,可以开发松耦合应用。

  2.Spring MVC

   SpringMVC提供了一种分离式的方法来开发Web应用。通过运用像DispatcherServlet,Model AndView和ViewResolver等一些简单的概念,开发Web应用将会变得非常简单。

3.SpringBoot

  Spring和SpringMVC的问题在于需要配置大量的参数。

  SpringBoot通过一个自动配置和启动的项来解决这个问题。

22.SpringBoot的自动配置原理?

   在Spring程序main方法中,添加@SpringBootApplication或者@EnableAutoConfiguration会自动去maven中读取每个starter中的spring.factories文件,该文件里面配置了所有需要被创建的Spring容器中的bean。

 23.SpringBoot的核心注解是哪些?他主由哪几个注解组成的?

    启动类上面的注解是@SpringBootApplication,他也是Spring Boot的核心注解,主要组合包含了以下3个注解:

   @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。

  @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置的功能。

          @SpringBootApplication(exclude={DataSourceConfiguration.class});

@ComponentScan:Spring组件扫描。

24.SpringBoot的核心配置文件有哪几个?他们的区别是什么?

  Spring Boot的核心配置文件是application和bootstrap配置文件。

  application配置文件这个容易理解,主要用于Springboot项目的自动化配置。

  bootstrap配置文件有以下几个应用场景:

        使用Spring Cloud Config配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。

    一些固定的不能被覆盖的属性。

    一些加密/解密的场景。

25.什么是SpringBoot Starter?有哪些常用的?

   和自动配置一样,Spring Boot Starter的目的也是简化配置,而SpringBoot Starter解决的是依赖管理配置复杂的问题,有了它,当我需要构建一个Web应用程序时,不必再遍历所有的依赖包,一个一个地添加到项目的依赖管理中,而是只需要一个配置Spring boot starter web,同理,如果想引入持久化功能,可以配置spring boot starter  data jpa。

Spring Boot也提供了其他的启动器项目包,包括用于开发特定类型应用程序的典型依赖项。

        spring  boot starter web  services

SOAP WEB  SERVICES

    spring  boot starter web 

WEB和RESTFUL应用程序

    spring boot  starter jdbc  传统的JDBC

   spring  boot  starter  test   单元测试和集成测试

   spring  boot starter hateoas    为服务添加hateoas

   spring boot starter  security 使用SpringSecurity进行身份验证和授权

   spring boot starter data jpa 带有Hibernate的spring data jpa 

   spring boot starter data  rest 使用spring data rest 公布简单的rest服务

26.spring boot starter parent 有什么作用?

    我们知道,新建一个Spring Boot项目,默认都是有parent的,这个parent就是spring  boot  starter  parent,spring  boot  starter  parent主要有如下作用:

     定义了Java编译版本

     使用UTF8格式编码

      继承自spring  boot dependencies,这里面定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时不需要写版本号

     执行打包操作的配置

     自动化的资源过滤

     自动化的插件配置

 

  

 

   

   

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

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

相关文章

智能优化算法应用:基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

深入理解 JavaScript 函数:提升编程技能的必备知识(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

python/C 生成beta分布的随机数

python/C 生成beta分布的随机数 文章目录 python/C 生成beta分布的随机数前言一、beta分布理论知识二、python 生成服从beta分布的随机数三、C语言生成服从beta分布的随机数 前言 想把一个算法用C语言实现,其中涉及到了beta分布取随机数,记录一下结果 一…

JOSEF约瑟 零序电流互感器DH-30L DH-70L 配套DJ-ZB1漏电继电器使用

系列型号 DH-16L型配套用零序(剩余)电流互感器DH-20L型配套用零序(剩余)电流互感器 DH-23L型配套用零序(剩余)电流互感器DH-30L型配套用零序(剩余)电流互感器 DH-45L型配套用零序&am…

【Linux笔记】文件查看和编辑

🍎个人博客:个人主页 🏆个人专栏:Linux学习 ⛳️ 功不唐捐,玉汝于成 目录 前言 命令 cat (Concatenate and Display): more 和 less: nano 和 vim (文本编辑器): 结语 我的其他博客 前言 学习Linux命令行和文件…

测试框架|Burp Suite几个基本工具的使用

前阵子项目上想通过测试工具在网页上模拟返回错误代码 500 来查看页面的错误处理,然后去调查了下 burp suite,看了些基本工具的使用文档。虽然最后证实 burp suite 只能用来处理页面测试应用程序的实际行为和响应,而不是尝试模拟不存在的问题…

大数据求职心得

........................................................................................................................................................... 大数据求职心得 ...................................................................................…

GCC:GNU编译器

GCC(GNU Compiler Collection)是一款广泛使用的开源编译器套件,支持多种编程语言,包括C、C、Objective-C、Fortran、Ada和Go等。在本文中,我们将通过一个简单的C程序来介绍GCC的编译过程,包括预处理、编译、…

HrSegNet 23年裂缝检测新文章基于PaddelPaddle和Paddleseg的复现

本文章是对2023年发表在Automation in Construction上论文 Real-time High-Resolution Neural Network with Semantic Guidance for Crack Segmentation 的复现。 我参考了作者上传至github的代码,并得到了作者的帮助。https://github.com/CHDyshli/HrSegNet4Cra…

4G微型RTU如何实现冬季工业管网远程监测

随着我国北方全面进入到冬季,多日以来严寒、降雪天气频发,工业基础设施也迎来冬季考验。对于一些输送化工原料、油气和给排水等用途的工业管网设施,在面临极端冰雪天气时易产生各种风险,诸如管道水/气泄漏损耗、低温冻裂、积雪压塌…

DBdoctor,MySQL 性能问题终结者

本文 5542 字,读完大约需要 8 分钟(文末有惊喜 License!) 17(一起),这是我的幸运数字,恰巧今年 8 月 17 日在 DTCC 大会上我们全网首次发布 DBdoctor 数据库性能诊断软件(简称 DBdoctor&#x…

pake协议传输文件magic-wormhole

pake协议传输文件magic-wormhole 1 magic-wormhole简介其他介绍 2 安装magic-wormhole3 使用示范发送文件指定虫洞码长度 接收文件 1 magic-wormhole简介 16.7k star 强推,丝滑、简洁、安全的开源工具——magic-wormhole 项目地址:https://github.com/…

Debug

0、Debug的步骤 Debug(调试)程序步骤如下: 1、添加断点 2、启动调试 3、单步执行 4、观察变量和执行流程,找到并解决问题 1、添加断点 在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点&…

Java文件流大家族(通俗易懂,学习推荐版,很详细)——操作文件本身和文件中的数据

1.File(操作文件本身) 1.定义 目录 2.常用方法 3.路径引用符 可以用/或者\\分隔路径 还可以用File.separator分隔路径,会根据不同系统使用啥分隔符。 4.绝对路径、相对路径及桌面路径表示 桌面路径为: 我电脑的用户名为X 5.示例…

RobotMaster学习——工序导入,参数设置,轨迹生成

目录 引出1.导入工序2.修改刀具其他刀具参数 3.进行工序分配4.设置TCP5.设置工作站6.工序整体导入配置7.进行计算 总结 引出 RobotMaster的操作流程,从导入工序到生产轨迹。 1.导入工序 2.修改刀具 要选择第七把刀具 其他刀具参数 第一把刀具 第二把刀具 第三把刀…

Certum属于企业的泛域名ssl证书

泛域名SSL证书可以保护主域名以及其下所有二级域名,所以也可以叫它通配符SSL证书。Certum旗下有两种泛域名SSL证书,一种是入门级的泛域名SSL证书,支持个人或者企事业单位申请,一种是企业泛域名SSL证书,只能企事业单位申…

Sublime Text 3配置 C# 开发环境

Sublime Text 3配置 C# 开发环境 一、引言二、主要内容1. 初识 Sublime Text 32. 初识 C#3. 接入 .NET Framework3.1 下载 .NET Framework3.2 环境变量配置 4. 配置 C# 开发环境5. 编写 C# 代码6. 运行 C# 代码 三、总结 一、引言 C# 是一种面向对象的编程语言,由微…

STL中优先队列(堆)的详解

文章目录 priority_queue的基本介绍堆(heap)堆的概念与结构 priority_queue 的介绍与使用 priority_queue的基本介绍 这个priority_queue翻译成中文就是优先级队列,但其实我们很难去一眼看出他的意思到底是什么,他的逻辑结构实际上类似于数据结构中的堆…

深度剖析:Golang中结构体方法的高级应用

深度剖析:Golang中结构体方法的高级应用 引言结构体方法的基础回顾结构体的定义和用法方法的定义和绑定基本语法和用法 高级特性与应用封装、继承和多态方法集与接口的关系结构体方法的匿名字段和嵌入结构体 性能优化与最佳实践接收器类型的选择:指针还是…

SpringIOC之LocaleContext

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…