创建Spring Bean实例化是Spring Bean生命周期的第一阶段
Bean的生命周期主要有如下几个步骤:
「详细介绍:Spring In Action是这样讲的:」
在实例化Bean之前在BeanDefinition里头已经有了所有需要实例化时用到的元数据,接下来Spring只需要选择合适的实例化方法以及策略即可。
「BeanDefinition」
Spring容器启动的时候会定位我们的配置文件,加载文件,并解析成Bean的定义文件BeanDefinition
右边的Map里存储这bean之间的依赖关系的定义BeanDefinition,比如OrderController依赖OrderService这种
实例化方法有两大类分别是工厂方法和构造方法实例化,后者是最常见的。其中Spring默认的实例化方法就是无参构造函数实例化。
如我们在xml里定义的以及用注解标识的bean都是通过默认实例化方法实例化的
实例化方法
「使静态工厂方法实例化」
- public class FactoryInstance {
- public FactoryInstance() {
- System.out.println("instance by FactoryInstance");
- }
- }
- public class MyBeanFactory {
- public static FactoryInstance getInstanceStatic(){
- return new FactoryInstance();
- }
- }
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
- factory-method="getInstanceStatic"/>
「使用实例工厂方法实例化」
- public class MyBeanFactory {
- /**
- * 实例工厂创建bean实例
- *
- * @return
- */
- public FactoryInstance getInstance() {
- return new FactoryInstance();
- }
- }
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">