什么是Bean的实例化?
在面向对象的程序中,想要使用某个对象,就需要先实例化这个对象。Spring中,想要使用容器中的Bean,也需要实例化Bean。
其类似于当我们需要创建一个类对象而去new这个类一样。通常来说,当我们需要用到一个Bean的时候,只有将其实例化之后,我们才可以去调用它。在Spring中,Spring会自动帮我们实例化好Bean,只需要我们告诉Spring我们需要用到哪个Bean,并在Spring的配置文件配置相关代码,这样,Spring就可以自动帮我们实例化好Bean,然后我们直接用getBean方法就可以获得Bean的实例化。
Spring中,有三种实例化方式:分别为构造器实例化(最常用)、静态工厂实例化和实例工厂方式实例化。
接下来,我将详细讲解这三种实例化的区别以及使用。
一、构造器实例化
概述:构造器实例化是指Spring容器通过Bean对应的类中默认的构造函数(无参构造函数)来实例化Bean
具体示例:
首先,我们先随意创建一个Bean类
Bean.java:
package com.zzc.contructor;
public class Bean1 {
//什么都不用做
}
接着,在Spring配置文件中配置
beans1.xml:
测试,写一个main函数,做测试
Test1.java:
package com.zzc.contructor;
public class Test1 {
public static void main(String[] args) {]
//定义配置文件路径
String xmlPath = "com/zzc/contructor/beans1/xml";
//Application Context 在加载配置文件时,对Bean进行实例化
ApplicationContext appliContext = new ClassPathXmlApplicationContext(xmlPath);
//getBean方法里放的是在xml文件里的id名
Bean1 bean = (Bean1) appliContext.getBean("bean1");
System.out.println(bean);
}
}
运行结果:
com.zzc.contructor.Bean1@61f5df
二、静态工厂方式实例化
概述:静态工厂方式要求创建一个静态工厂的方法来创建Bean的实例
具体示例:
首先,还是一样,先创建一个Bean类:
Bean2.java:
package com.zzc.staticFactory
public class Bean2 {
//什么都不用写
}
接着,创建一个Bean工厂类,并在其里面定义一个静态的返回Bean对象的方法:
Bean2Factory.java:
package com.zzc.staticFactory
public class Bean2Factory {
//注意这里的这个方法是static的
public static Bean2 createBean() {
return new Bean2();
}
}
然后在xml文件里面配置:
beans2.xml:
搞定,测试,测试:
Test2.java:
package com.zzc.staticFactory;
public class Test2 {
public static void main(String[] args) {
String xmlPath = "com/zzc/staticFactory/beans2.xml"
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
System.out.println(applicationContext.getBean("bean2"));
}
}
运行结果:
com.zzc.staticFactory.Bean2@56dfcb
三、实例工厂方式实例化:
概述:实例工厂采用直接创建Bean实例的方式,在配置文件中,通过factory-bean属性配置一个实例工厂,然后使用factory-method属性确定使用工厂中的哪个方法。
具体示例:
首先,还是一样,创建一个Bean类
Bean3.java:
package com.zzc.factory;
public class Bean3 {
//什么都不用写
}
接着,创建我们的Bean工厂类:
Bean3Factory.java:
package com.zzc.factory;
public class Bean3Factory {
public Bean3Factory() {
System.out.println("bean3工厂实例化中");
}
public Bean3 createBean() {
return new Bean3();
}
}
最后,在xml配置文件中这样配置:
beans3.xml:
测试,测试:
Test3.java:
package com.zzc.factory;
public class Test3 {
public static void main(String[] args) {
String xmlPath = "com/zzc/factory/beans3.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
System.out.println(applicationContext.getBean("bean3"));
}
}
运行结果:
bean3工厂实例化中
com.zzc.factory.Bean3@56dfcb
至此,Spring实例化Bean的三种方式就已经介绍完啦,希望对你们有帮助!