一. Spring
1. 谈谈你对Spring的理解
关键点
- 企业框架,目前最流行,没有之一
- AOP、IOC、Spring MVC
2. Spring中用到了哪些设计模式
- 工厂模式,比如 BeanFactory
- 代理模式,在Aop实现中用到了JDK的动态代理
- 单例模式,Bean的创建默认就是单利的
3. IoC的启动过程
- Resource文件的定位,即找到bean的配置文件
- 通过特定的reader解析该bean配置文件,抽象成beanDefinition类
- 将beanDefinition向容器注册,写入到一个大的HashMap中
4. BeanFactory 和 ApplicationContext 区别
- 功能,BeanFactory负责读取bean配置,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期;ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了国际化支持、资源访问、事件传递、队Web的支持等功能.最后,如果你的时间不是很紧张,并且又想快速的初级程序员提高,最重要的是不怕吃苦,建议你可以扩列我伪(同音):首先是:12534 ,最后是:31195,(连在一起)即可找到我,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~,包括小编自己整理的一份2022最新的程序员提升资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。
- BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化;而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。
- BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册
5. Bean 的生命周期
- 实例化一个Bean,也就是我们通常说的new
- 按照Spring上下文对实例化的Bean进行配置,也就是IOC注入
- 如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,此处传递的是Spring配置文件中Bean的ID
- 如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(),传递的是Spring工厂本身(可以用这个方法获取到其他Bean)
- 如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文,该方式同样可以实现步骤4,但比4更好,以为ApplicationContext是BeanFactory的子接口,有更多的实现方法
- 如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProce