Java中有哪些Spring面试题

技术Java中有哪些Spring面试题本篇内容主要讲解“Java中有哪些Spring面试题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中有哪些Spring面试题”吧

本文主要讲解“什么是Java中的Spring面试问题”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你了解一下什么是Java中的Spring面试问题。

谈谈你对 Spring 的理解?

Spring是一个开源框架,它的诞生是为了简化企业应用程序开发。Spring可以让简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。

Spring容器的主要核心是:

控制反转(IOC),在传统的java开发模式中,当需要一个对象时,我们会使用new或者getInstance来直接或者间接调用构造方法来创建一个对象。在spring开发模式中,spring容器使用工厂模式为我们创建所需的对象,而不是自己创建,我们可以直接调用spring提供的对象,这就是控制反转的思想。

依赖注入(DI), spring使用javaBean对象的set方法或带有参数的构造方法,在创建所需对象时自动为其属性设置所需的值,这就是依赖注入的思想。

面向切面编程(AOP),在oop中,我们将事物垂直绘制成对象。在面向方面的编程中,我们将对象的一些相似的方面横向的画到一个方面,在这个方面做一些事情,比如权限控制、事物管理、日志记录等等。通用操作处理的过程是面向切片编程的思想。AOP的底层是动态代理。如果接口是JDK动态代理,如果类是CGLIB,则实现动态代理。

Spring 中的设计模式有哪些?

工厂模式:

BeanFactory是Factory方法模式的体现,用于创建对象的实例;

单例模式:

Bean默认为单例模式。

代理模式:

Spring的AOP函数使用了JDK的动态代理和CGLIB字节码生成技术

模板方法:

用来解决代码重复的问题。例子有。resttemplate、JMS模板和JPA模板。

观察者模式:

定义对象键的一对多依赖关系。当一个对象的状态改变时,依赖它的所有对象都会被通知和更新,比如Spring中Application监听器的实现。

Spring 的常用注解?

@ Required:此注释应用于设置方法。

@Autowired:此注释应用于有值方法、无值方法、构造函数和变量。

@Qualifier:此注释与@Autowired一起使用,以消除特定bean的自动组装的歧义。

Spring bean 的生命周期?

Bean定义:使用bean/bean在配置文件中定义。

Bean初始化:有两种方法可以初始化:

(1)在配置文件中通过指定init-method属性。

实施组织。spring frameing . bean . factory .初始化bean接口。

Bean调用:有三种方法可以获取并调用bean实例。

豆毁灭:毁灭有两种方式。

使用配置文件中指定的destroy-method属性。

实现org . spring framework . bean . factory . disperseablebean接口。

Spring 管理事务的方式?

编程事务,用代码硬编码。

在配置文件中配置的声明性事务。

声明性事务分为:

基于XML的声明性事务。

基于注释的声明性事务。

Spring的事务传播行为有哪些?

1.PROPAGATION_REQUIRED:如果当前没有事务,则创建一个新事务;如果有,加入交易。此设置是最常用的设置。

2、PROPA

GATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。

3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

5、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6、PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

7、PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则按REQUIRED属性执行。

Spring事务的隔离级别?

1、ISOLATION_DEFAULT:这是个 PlatfromTransactionManager 默认的隔离级别,使用数据库默认的事务隔离级别。

2、ISOLATION_READ_UNCOMMITTED:读未提交,允许另外一个事务可以看到这个事务未提交的数据。

3、ISOLATION_READ_COMMITTED:读已提交,保证一个事务修改的数据提交后才能被另一事务读取,而且能看到该事务对已有记录的更新。

4、ISOLATION_REPEATABLE_READ:可重复读,保证一个事务修改的数据提交后才能被另一事务读取,但是不能看到该事务对已有记录的更新。

5、ISOLATION_SERIALIZABLE:一个事务在执行的过程中完全看不到其他事务对数据库所做的更新。

Spring 的通知是什么?有哪几种类型?

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。

Spring 切面可以应用五种类型的通知:

  •  before:前置通知,在一个方法执行前被调用。

  •  after: 在方法执行之后调用的通知,无论方法执行是否成功。

  •  after-returning: 仅当方法成功完成后执行的通知。

  •  after-throwing: 在方法抛出异常退出时执行的通知。

  •  around: 在方法执行之前和之后调用的通知。

什么是 Spring IOC?IOC的优点是什么?

IOC :

控制反转,Spring IOC 负责创建对象,管理对象。通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

优点:

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和 JNDI 查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC 容器支持加载服务时的饿汉式初始化和懒加载。

BeanFactory 与 AppliacationContext 有什么区别?

BeanFactory

基础类型的 IOC 容器,提供完成的 IOC 服务支持。如果没有特殊指定,默认采用延迟初始化策略。相对来说,容器启动初期速度较快,所需资源有限。

ApplicationContext

ApplicationContext 是在 BeanFactory 的基础上构建,是相对比较高级的容器实现,除了 BeanFactory 的所有支持外,ApplicationContext 还提供了事件发布、国际化支持等功能。ApplicationContext 管理的对象,在容器启动后默认全部初始化并且绑定完成。

Spring 支持的几种 bean 的作用域?

Spring 框架支持以下五种 bean 的作用域:

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。

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

不是线程安全的。

当存在共享变量时,大家都能去调用,此时就存在线程安全问题。

什么是 bean 的自动装配?有哪些方式自动装配?

自动装配:

无须在 Spring 配置文件中描述 javaBean 之间的依赖关系(如配置<property>、<constructor-arg>)。IOC 容器会自动建立 javabean 之间的关联关系。

五种自动装配的方式:

  •  no:默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。

  •  byName:通过参数名自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byname,

之后容器试图匹配、装配和该 bean 的属性具有相同名字的 bean。

  •  byType:通过参数类型自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byType,

之后容器试图匹配、装配和该 bean 的属性具有相同类型的 bean。如果有多个 bean 符合条件,则抛出错误。

  • constructor:这个方式类似于 byType, 但是要提供给构造器参数,如果没有确定的带参数的构造器参数类

型,将会抛出异常。

  •  autodetect:首先尝试使用 constructor 来自动装配,如果无法工作,则使用 byType 方式。

什么是spring 的 AOP?

AOP:全称 Aspect Oriented Programming,即:面向切面编程。

AOP是OOP(Object Oriented Programming,面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。

AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码

AOP 技术利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。

业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。

横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。

AOP 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

AOP 核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组 API 提供横切功能。比如,一个日志模块可以被称作日志的 AOP 切面。根据需求的不同,一个应用程序可以有若干切面。在 Spring AOP 中,切面通过带有@Aspect 注解的类实现。

经典应用:事务管理、性能监视、安全检查、缓存 、日志等

AOP的实现方式?

aop底层采用代理机制进行实现。

  •  接口 + 实现类:spring采用 jdk 的动态代理Proxy。

  •  实现类:spring 采用 cglib字节码增强。

AOP中有哪些概念?

①Joinpoint( 连接点):被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点。

②Pointcut( 切入点):要对哪些 Joinpoint 进行拦截,即被增强的连接点。

③Advice( 通知/ 增强):拦截到 Joinpoint 之后所要做的事情,及增强代码。

④Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction 可以在运行期为类动态地添加一些方法或 Field。

⑤Target(目标对象):目标类,需要被代理的类

⑥Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。

⑦Proxy(代理):代理类,一个类被 AOP 织入增强后,就产生一个结果代理类。

⑧Aspect( 切面):是切入点和通知(引介)的结合。

在Spring中怎么定义类的作用域?

当定义一个<bean> 在 Spring 里,可以给这个 bean 声明一个作用域。它可以通过 bean 定义中的 scope 属性来定义。

当 Spring 要在需要的时候每次生产一个新的 bean 实例,bean 的 scope 属性被指定为 prototype。

一个 bean 每次使用的时候必须返回同一个实例,这个 bean 的 scope 属性被指定为 singleton。

鸿蒙官方战略合作共建——HarmonyOS技术社区

到此,相信大家对“Java中有哪些Spring面试题”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/55802.html

(0)

相关推荐

  • 粉底液怎么用具体步骤,使用粉底液之前的步骤是什么

    技术粉底液怎么用具体步骤,使用粉底液之前的步骤是什么上宛央粉底液之前的步骤是:1粉底液怎么用具体步骤、清洁皮肤2、润肤或是使用宛央肌密水,给皮肤补充水份或是收缩毛孔3、上营养面霜4、宛央粉底液6、上粉饼或散粉7、画眉(眉

    2021年10月21日
  • 四氯化碳的密度,甲苯与四氯化碳的密度关系

    技术四氯化碳的密度,甲苯与四氯化碳的密度关系Br溶于水呈橙黄色四氯化碳的密度,溶于四氯化碳呈橙红色, 由于水的密度比四氯化碳的要小,所以四氯化碳在下面, 渐渐水中的BR就溶到四氯化碳了,
    所以上层无色,下层橙色。

    生活 2021年10月23日
  • 如何解决亿级用户的分布式数据库数据存储问题

    技术如何解决亿级用户的分布式数据库数据存储问题这篇文章给大家介绍如何解决亿级用户的分布式数据库数据存储问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、MySQL复制1.MySQL的主从复制My

    攻略 2021年12月8日
  • GRYZ10.18模拟赛解题报告

    技术GRYZ10.18模拟赛解题报告 GRYZ10.18模拟赛解题报告写在前面
    期望得分:\(100+100+100=300pts\)
    实际得分:\(100+100+10=210pts\)
    挂了一个 \

    礼包 2021年10月19日
  • hivesql有没有控制流程的语法(hive sql基本操作描述正确的是)

    技术Hive sql使用注意事项有哪些这篇文章给大家分享的是有关Hive sql使用注意事项有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言在进行数仓搭建和数据分析时最常用的就是 sq

    攻略 2021年12月16日
  • VS2017如何配置OpenCV通用属性

    技术VS2017如何配置OpenCV通用属性这篇文章将为大家详细讲解有关VS2017如何配置OpenCV通用属性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在VS环境下配置OPENC

    攻略 2021年11月21日