【2024项目实训】框架篇-Spring

01-框架篇简介

02-Spring-单例bean是线程安全的吗?

前置问题:Spring框架中的bean是单例的吗?

答:是的

那么它是线程安全的吗?(默认singleton)

答:不是线程安全的。

成员方法需要考虑线程安全

answer:

03-Spring-AOP相关面试题

AOP:Aspect Oriented Programming 面向切面编程

何为切面:将与业务无关的公共行为或逻辑 抽取并封装成一个模块,这个模块成为“切面”(Aspect)。

用@Aspect来注明切面类

Q:Spring中的事物是如何实现的?

04-Spring-事务失效的场景

假设账户1给账户2转账,此处运行后,账户1扣除转账金额,但是账户2没有获得转账。

AOP实现的事务,不能处理自己处理之后的异常,它只能处理被抛出的异常。

非检查异常:如IndexOutOfBoundsException(运行时异常)

而检查性异常包括:SQLException、FileNotFoundException等

编译器要检查这类异常,一方面是因为该类异常的发生难以避免,

另一方面就是让开发者去解决掉这类异常,所以称为必须处理的异常。

解决:只要有异常就回滚事务

只要不用public修饰这个方法,就会导致失效。

05-Spring-bean的生命周期

为什么要问这个问题?

了解了bean的生命周期后——我们能更好的了解Spring的框架、更好的理解Spring

Bean生命周期:根本听不懂啊…

Bean的创建和初始化是分开的

最后销毁bean

看不懂这个,但是有代码呀!

1、BeanDefinition

2、构造函数

3、依赖注入

4、实现Aware接口

5、BeanPostProcessor#before

6、初始化方法

自定义初始化方法

7、BeanPostProcessor#after

这个比较重要

它的作用:对象需要代理、增强

8、销毁

(其实讲了一遍听了两三遍以后还是没那么懂…

06-Spring-bean的循环依赖(引用)

简而言之,就是实例化A需要B的对象,但是实例化B需要A的对象,循环依赖,

导致既不能实例化(或者说初始化)A也不能实例化B。

解决方法:三级缓存

一级缓存无法解决循环依赖

因为只有当bean对象完全初始化完成,才会存入一级缓存中。

如果我们加入二级缓存,它相当于一个中间人的作用,

可以将生命周期还没走完的bean对象存入缓存中并可以提供给其他对象进行初始化。

那么既然已经解决了两级缓存的问题,为什么还需要第三级缓存?

原因:如果一个对象是代理对象(被增强了)——借助三级缓存

从对象工厂中获取的对象可以创建代理对象(如果需要的话)或者普通对象

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

因为三级缓存只能解决bean对象从依赖注入开始的循环依赖,而对于构造函数这部分不能解决。

注解@Lazy 延迟加载(什么时候实例化,什么时候注入)

07-SpringMVC-执行流程

前端控制器接受所有请求

执行顺序:前端控制器——处理器映射器——处理器适配器——(处理器)——视图解析器

在当前的开发中,有一些变化。

因为目前的开发多为前后端分离的 接口开发 异步请求

@ResponseBody注解作用:通过HttpMessageConverter将结果转换为JSON并响应,不存在视图部分。

08-SpringBoot-自动配置原理

实现自动配置的核心注解:@EnableAutoConfiguration

@Import

导入自动配置的选择器

Spring. Factories

自动配置类包括:RabbitMQ、缓存等等

打开缓存自动配置类

@Bean

@ConditionalOnMissingBean

如果Spring容器中没有该对象,则创建并放入Spring容器中;

如果已经有了,则不执行下面的代码了哦。

面试回答:

09-Spring框架常见的注解

Spring、springMVC、springboot的常见注解

1、Spring常见注解

2、SpringMVC注解

3、Springboot注解

就上一节说的那仨

注意不要混淆他们

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值