- 1.什么是Spring?
- 2.Spring的优缺点是什么?
- 3.Spring有哪些应用场景
- 4.Spring由哪些模块组成?
- 5.Spring框架中都用到了哪些设计模式?
- 6.什么是Spring IoC容器?
- 7.控制反转(IoC)的作用是什么?
- 8.Spring IoC的实现机制
- 9.BeanFactory 和 ApplicationContext有什么区别?
- 10.什么是依赖注入?
- 11.依赖注入的方式有哪些?
- 12.如何选择合适的依赖注入方式?
- 13.什么是Spring bean?
- 14.将一个类声明为Spring的bean 的注解有哪些?
- 15.如何给Spring容器提供配置元数据?Spring有几种配置方式?
- 16.Spring基于xml注入bean的几种方式
- 17.Spring中的Bean的作用域有哪些?
- 18.Spring框架中的单例bean是线程安全的吗?
- 19.解释Spring框架中bean的生命周期
- 20.什么是bean的自动装配?
- 21.Spring自动装配bean 有哪些方式?
- 22.自动装配有哪些局限性?
- 23.Spring怎么解决循环依赖问题?
- 24.如何开启注解装配?
- 25.Spring bean相关注解
- 26.Web开发相关注解
- 27.Spring AOP相关注解
- 28.Spring支持的事务管理类型,Spring 事务实现方式有哪些?
- 29.Spring的事务隔离级别有哪些?
- 30.Spring事务的传播行为有哪些?
- 31.Spring框架的事务管理有哪些优点?
- 32.什么是SpringMVC
- 33.SpringMVC的优点
- 34.SpringMVC的工作原理
- 35.什么是Springboot?Springboot的特点(Springboot和Spring有什么区别)
- 36.SpringBoot自动配置原理
- 37.SpringBoot配置加载顺序
- 38.SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?
- 39.SpringBoot 打成的jar包和普通的jar包有什么区别 ?
39.SpringBoot 打成的jar包和普通的jar包有什么区别 ?
Beand的生命周期比较长,并且不是很容易记住,如下图
具体步骤如下:
- 首先通过
getBean()
方法向容器请求一个Bean - 如果容器注册了InstantiationAwareBeanPostProcessor接口,则在实例化Bean前调用接口的
postProcessBeforeInstantiation()
方法 - 根据配置情况调用Bean构造函数或工厂方法实例化Bean
- 如果容器注册了InstantiationAwareBeanPostProcessor接口,在实例化Bean之后,调用接口的
postProcessAfterInstantiation()
方法 - 如果Bean配置了属性信息,容器会将配置值设置到Bean对应的属性中,不过在设置每个属性前将先调用InstantiationAwareBeanPostProcessor接口的
postProcessPropertyValues()
方法 - 调用Bean的属性设置方法设置属性值
- 如果Bean实现了BeanNameAware接口,则将调用
setBeanName()
方法,将配置文件中的该Bean对应的名称设置到Bean中 - 如果Bean实现了BeanFactoryAware接口,则将调用
setBeanFactory()
方法,将BeanFactory容器实例设置到Bean中 - 如果BeanFactory装配了BeanPostProcessor后处理器,则将调用BeanPostProcessor的
postProcessBeforeInstantiation(Object bean, String beanName)
方法对Bean进行加工操作。其中,参数Object bean是指当前正在处理的Bean,而beanName是当前Bean的配置名,返回对象为加工处理后的Bean - 如果Bean实现了InitializingBean接口,则将调用接口的
afterPropertiesSet()
方法 - 如果在Bean中通过init-method属性定义了初始方法,则将执行这个方法
- BeanPostProcessor后处理器定义了两个方法,其中一个在第8步中调用过了,这里调用
postProcessAfterinitialization(Object bean, String beanName)
方法再次对Bean进行加工处理 - 如果没有指定Bean的范围,则Bean的默认范围为单例,将Bean放入Spring IoC容器的缓存池中,并将Bean返回给调用者
- 如果Bean实现了DisposableBean接口,则将调用接口的
destory()
方法 - 如果通过<bean>的destory-method属性指定了Bean的销毁方法,那么将执行这个方法完成对Bean资源的释放
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版