spring生命周期七个过程,java生命周期七个过程

首页 > 经验 > 作者:YD1662022-11-01 13:40:59

推荐阅读:



Springbean的生命周期

在面试中,我们经常会被问到一个问题,就是SpringBean的生命周期。用大白话说,就是说其在创造到销毁按顺序调用了什么方法,在我刚开始学了,一般就是对着标准答案去硬背,完全不了解其意思,也十分容易忘记。

流程图如下

spring生命周期七个过程,java生命周期七个过程(1)

这样看上去十分的复杂,记住也很容易忘掉。

所以,我下面会用代码的方式一步步来模拟SpringBean的工作流程,做到深入了解,这样就不会再次忘记这个知识点了。

既然都说Bean对象Bean对象,那么SpringBean自然也是一个对象了,我们用一个简单的对象来说明,那么要创建对象就需要有构造方法,对象还会有它的属性跟get、set方法。

private String field; public SpringBean() { System.out.println("SpringBean 构造方法"); } public String getField() { System.out.println("SpringBean get方法"); return field; } public void setField(String field) { System.out.println("SpringBean set方法"); this.field = field; }

众所周知要创建一个SpringBean的话还要在配置文件里去声明这个Beam,当然也可以用注解的方式。

<bean class="SpringBean"> <property name="field" value="test" /> </bean>

然后我们去初始化这个容器看看,运行结果是什么

public static void main(String[] args) { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml"); }

spring生命周期七个过程,java生命周期七个过程(2)

这里我们可以看到当我们在容器里面加载bean的时候,它会依次调用构造方法和set方法,这两步我相信大部分人都知道。但是除此之外我们想一想,我们的Spring它是否还干了别的事情,我们接下来看一下。

如果这个Bean它实现了一些Aware接口的话,它就会注入和bean容器基础属性层面相关的信息。比如实现了BeanNameAware接口,我们要重写它的setBeanName方法,在配置文件中把这个Bean的id设置一下

public void setBeanName(String s) { System.out.println("setBeanName:" s); }

<bean id="BeanName" class="SpringBean"> <property name="field" value="test" /> </bean>

运行一下看会发生什么

spring生命周期七个过程,java生命周期七个过程(3)

剩下的BeanFactoryAware和ApplicationContextAware接口同理,我们直接看结果

spring生命周期七个过程,java生命周期七个过程(4)

首页 12下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.