Java最全面试题之Spring篇,Java开发自学教程

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

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

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

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

=========================

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

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

BeanFactory 与 AppliacationContext 有什么区别?

========================================

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

ApplicationContextApplicationContext 是在 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 之间的依赖关系(如配置、)。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( 切面):是切入点和通知(引介)的结合。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

26426854)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-IGEacrmw-1710826426855)]

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值