Spring全家桶面试题

wuchangjian2021-11-03 16:22:25编程学习

目录

  • 什么是Spring
  • Spring的优缺点是什么
  • 什么是Spring IOC容器?有什么作用?优点是什么?
  • Spring IoC的实现机制是什么
  • IoC和DI的区别是什么
  • 紧耦合和松耦合有什么区别?如何编写松耦合代码?
  • BeanFactory的作用
  • BeanDefinition的作用
  • BeanFactory和ApplicationContext有啥区别?
  • BeanFactory和FactoryBean有什么区别?
  • Spring IoC有哪些扩展点,在什么时候调用?
  • 什么是Spring bean?JavaBean和SpringBean和对象的区别?
  • 配置Bean有哪几种方式
  • 解释Spring支持的几种bean的作用域
  • 单例Bean的优势是什么?
  • Spring的Bean是线程安全的吗?
  • Spring如何处理线程并发问题?
  • Spring实例化Bean有哪几种方式?
  • 什么是Bean装配?什么是Bean的自动装配?

什么是Spring

在这里插入图片描述
在这里插入图片描述

Spring的优缺点是什么

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

什么是Spring IOC容器?有什么作用?优点是什么?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Spring IoC的实现机制是什么

在这里插入图片描述
简单工厂+反射(BeanFactory、创建对象)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IoC和DI的区别是什么

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

紧耦合和松耦合有什么区别?如何编写松耦合代码?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BeanFactory的作用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

BeanDefinition的作用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
工厂模式加反射机制
在这里插入图片描述

BeanFactory和ApplicationContext有啥区别?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BeanFactory和FactoryBean有什么区别?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
拿到原本实例
在这里插入图片描述
在这里插入图片描述
说下Spring IOC容器的加载过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
概念态到注册态,通过此Bean工场的后置处理器方法对外扩展,对内解耦。
在这里插入图片描述
注册完,生产
在这里插入图片描述
单例不是懒加载不是抽象才会在ioc加载为你生产
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到就返回,没有就创建
在这里插入图片描述
创建呢,首先实例化(反射)
在这里插入图片描述
实例化完就到纯净态
在这里插入图片描述
然后属性赋值
DI的体现
在这里插入图片描述
然后初始化
在这里插入图片描述
创建Aop,调其他扩展接口
在这里插入图片描述
Bean创建完后就放到Map当中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
IOC加载过程从创建一个容器开始,记住四个点:
概念态:配置的Bean,还没有真正的加载
定义态
在这里插入图片描述
会解析配置类
在这里插入图片描述
根据配置是扫描包,拿到所有.class,看看上面有没有注解。如果有就会
在这里插入图片描述
这就是概念态到定义态
在这里插入图片描述

ioc给的拓展
在这里插入图片描述
还有监听器啊啥的
在这里插入图片描述

下一个就是纯净态(已经实例化完成),还没有进行依赖注入
从定义态到纯净态就是BeanFactory负责生产了,开始生成前判断是否符合标准,判断是不是单例是不是抽象是不是懒加载,如果不是懒加载,不是抽象,是单例,才会在ioc加载时立马生产。
生产过程会去容器看有没有已经创建好,有就返回,没有才创建。
生产过程:1、实例化(反射),得到纯净态的Bean,然后解析DI,注入属性,调回调、Aware接口等对外扩展接口,这俩都是在初始化的时候做的
在这里插入图片描述
别忘了初始化时也会创建Aop,当然是需要实现Aop才会去创建Aop动态代理
在这里插入图片描述
最后创建完成,放到Map中
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Spring IoC有哪些扩展点,在什么时候调用?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
refresh方法体现了整个IoC的加载过程
在这里插入图片描述
这个方法中注册DeFination
在这里插入图片描述
两个扩展接口的方法
在这里插入图片描述
没配置就想实现注册用这个
在这里插入图片描述
玩一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
BeanDefination就是Bean之前的一个形态
在这里插入图片描述
工厂后置处理器
在这里插入图片描述
咋玩呢?
在这里插入图片描述
其实上一个和这个是子父关系
在这里插入图片描述
重写这个方法的原因就是这个
在这里插入图片描述
负责Bean生产过程中一切
可以做很多事情
在这里插入图片描述
可以拿到定义类去修改
在这里插入图片描述
注册单例
在这里插入图片描述
销毁Bean
在这里插入图片描述
注册的先调用啊
在这里插入图片描述
生产过程中的扩展接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
初始化也有一堆扩展接口哈
在这里插入图片描述

在这里插入图片描述
玩一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不同的Aware提供的东西也不同
在这里插入图片描述
提供名字
在这里插入图片描述
提供BeanFactory
在这里插入图片描述
刚才的那个扩展接口是在注册并定义的时候调用的
在这里插入图片描述
Aware是初始化的时候,调用时机不一样
在这里插入图片描述
生命周期回调又怎么玩呢?
每一个都有三种:
初始化
通过注解初始化阶段自动调用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
销毁也是三种
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

第一种
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

什么是Spring bean?JavaBean和SpringBean和对象的区别?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置Bean有哪几种方式

在这里插入图片描述
在这里插入图片描述
@Bean一般都是标注在方法上,方法返回的是对象。
Import:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解释Spring支持的几种bean的作用域

在这里插入图片描述
在这里插入图片描述
五种
在这里插入图片描述
在这里插入图片描述
默认的作用域是单例

单例Bean的优势是什么?

在这里插入图片描述
只创建一次节省内存,而且获取也快
在这里插入图片描述

Spring的Bean是线程安全的吗?

在这里插入图片描述
在这里插入图片描述

Spring如何处理线程并发问题?

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Spring实例化Bean有哪几种方式?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

什么是Bean装配?什么是Bean的自动装配?

在这里插入图片描述
就是bean和bean之间互相依赖起来

相关文章

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。