Spring:面试八股

参考

JavaGuide

Spring模块

在这里插入图片描述

在这里插入图片描述

CoreContainer

Spring框架的核心模块,主要提供IoC依赖注入功能的支持。内含四个子模块:

  • Core:基本的核心工具类。
  • Beans:提供对bean的创建、配置、管理功能。
  • Context:提供对事件传播和资源加载等功能的支持。
  • Expression:提供对表达式语言SpEL的支持。

AOP

AOP为 Aspect Oriented Programming 的缩写,即面向切面编程,核心作用是在不改变方法源代码的基础上进行功能增强。
细说Spring——AOP详解(AOP概览)
在编程中,对象与对象之间,方法与方法之间都是一个个切面。如:一般对于每个接口,都会做活动的有效性校验,即活动是否开始,是否结束、是否需要用户登录等,按朴素的逻辑设计如下:
在这里插入图片描述
这种设计的问题在于有多少个接口就要写多少次校验,因此自然可以想到,提出一个公共的校验方法供每个接口调用。
在这里插入图片描述
因此注入的概念如下图所示
在这里插入图片描述
下面我以一个简单的例子来比喻一下 AOP 中 Aspect, Joint point, Pointcut 与 Advice之间的关系.
让我们来假设一下, 从前有一个叫爪哇的小县城, 在一个月黑风高的晚上, 这个县城中发生了命案. 作案的凶手十分狡猾, 现场没有留下什么有价值的线索. 不过万幸的是, 刚从隔壁回来的老王恰好在这时候无意中发现了凶手行凶的过程, 但是由于天色已晚, 加上凶手蒙着面, 老王并没有看清凶手的面目, 只知道凶手是个男性, 身高约七尺五寸. 爪哇县的县令根据老王的描述, 对守门的士兵下命令说: 凡是发现有身高七尺五寸的男性, 都要抓过来审问. 士兵当然不敢违背县令的命令, 只好把进出城的所有符合条件的人都抓了起来.

  • Joint point:所有可能被植入的点。在此例中为全体县民。
  • Pointcut:提供一组规则来筛选植入点。在此例中为身高七尺五寸。
  • Advice:作用在植入点上的动作。此例中为抓起来。
  • Aspect:包括Pointcut和Advice,即把所有满足身高七尺五寸的人都抓起来。

Spring、SpringMVC、Springboot之间的关系

Spring包含了多个功能模块,其中最重要的是Core模块,提供了IoC依赖注入功能的支持。SpringMVC是Spring中的一个重要模块,依赖于Core模块实现,SpringMVC主要赋予Spring快速构建MVC架构的Web程序的能力。Springboot是一个基于XML或Java对Spring进行快速配置的框架,主要目的是为了简化Spring配置。

控制反转IoC

控制反转是一种设计思想,即:将原本在程序中手动创建对象的控制权,交给Spring框架去管理。
在这里插入图片描述
如图,没有IoC容器的情况下,类A依赖于类B,如果需要使用到A对象,则需要手动创建,这意味着需要知道类B的构造参数等,对于依赖了很多类的类,手动做这件事是非常麻烦的。

在这里插入图片描述

在有IoC容器的情况下,类之间的依赖关系由容器管理,并由容器完成对象的注入,当需要创建一个对象的时候只需配置好文件或注解即可,不用考虑对象创建的细节。

在Spring中IoC容器实际上就是一个Map(Key, Value),存放了各种对象。

SpringBean

Bean指代的就是那些被IoC容器所管理的对象。
需要告诉IoC容器,哪些对象是需要被管理的,通过配置元数据(XML文件或注解或Java配置类)实现。
以下注解可将一个类声明为bean:

  • @Component:通用注解,可标注任意类为Spring组件。
  • @Repository:对应持久层即Dao层,用于数据库相关操作。
  • @Service:对应服务层,主要涉及一些复杂逻辑调用Dao层。
  • @Controller:对应SpringMVC控制层,主要负责处理用户请求并调用Service层,返回数据给前端。

@Component和@Bean的区别联系

参考
参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值