Bean的实例化


    Spring可以看做一个大型的工厂,用于生产和管理Spring容器中的bean(对象),bean的实例化有三种方式:构造方法实例化,静态工厂实例化和实例工厂实例化,最常用的就是构造方法实例化。

1.构造方法实例化

创建BeanClass类

package instance;
public class BeanClass {
	public String message;
	public BeanClass() {
		message="构造方法实例化Bean";
	}
	public BeanClass(String s) {
		message=s;
	}
}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   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">
     <!-- 构造方法实例化bean -->
     <bean id="constructorInstance" class="instance.BeanClass"/>
 </beans>

测试类:

package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
public class TestInstance {
	public static void main(String[] args) {
		ApplicationContext appCon=new ClassPathXmlApplicationContext("applicationContext.xml");
		BeanClass b1=(BeanClass)appCon.getBean("constructorInstance");
		System.out.println(b1+b1.message);
		}
}

运行结果:

instance.BeanClass@236e3f4e构造方法实例化Bean

2.静态工厂实例化

    在使用静态方法实例化bean时要求在工厂类中创建一个静态方法来创建bean的实例。
创建工厂类:

package instance;
public class BeanStaticFactory {
	private static BeanClass beanInstance=new BeanClass("调用静态工厂方法实例化bean");
	public static BeanClass createInstance() {
		return beanInstance;
	}
}

配置文件:class属性指定静态工厂类,factory-method属性指定工厂类中的静态方法

 <!-- 静态工厂实例化bean -->
     <bean id="staticFactoryInstance" class="instance.BeanStaticFactory" factory-method="createInstance"/>

测试代码:

BeanClass b2=(BeanClass)appCon.getBean("staticFactoryInstance");
		System.out.println(b2+b2.message);

运行结果:

instance.BeanClass@3cc1435c调用静态工厂方法实例化bean

3.实例工厂实例化

在使用实例工厂实例化bean时要在工厂类中创建一个实例方法来创建bean的实例。
创建工厂类:

package instance;
public class BeanInstanceFactory {
	public BeanClass createBeanClassInstance() {
		return new BeanClass("调用实例工厂方法实例化bean");
	}
}

配置文件:

<!-- 实例工厂实例化bean -->
<!--使用factory-bean属性指定配置文件,使用factory-method属性指定使用工厂中的哪个方法实例化bean-->
     <bean id="myFactory" class="instance.BeanInstanceFactory"/>
     <bean id="instanceFactoryInstance" factory-bean="myFactory" factory-method="createBeanClassInstance"/>

测试类:

BeanClass b3=(BeanClass)appCon.getBean("instanceFactoryInstance");
		System.out.println(b3+b3.message);

运行结果:

instance.BeanClass@6bf0219d调用实例工厂方法实例化bean
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页