Spring学习--Bean实例化的三种方式

    在面向对象的程序中,要使用某个对象,需要先实例化这个对象。在spring中,实例化对象对象有三种方式:构造器实例化、静态工厂实例化和实例工厂实例化。其中用得多的是构造器实例化。

下面分别介绍这三种实例化方法的实现。以基于XML配置方法来演示。

项目结构图如下:

一、构造器实例化

    这种方法中,需要有无参构造方法,我们只需要在Spring配置文件中配置该bean就行。

以User为例

1. User代码如下:

package com.zdxh.instance;

public class User {

}

 2.配置文件:为简单起见,配置文件同User.java在同一个包

<?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 id="user" class="com.zdxh.instance.User"/>

</beans>

3.编写测试代码,使用Junit测试用例

 

package com.zdxh.instance;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

class InstanceTest {

	@Test
	void testConstructor() {
		ApplicationContext ac = new ClassPathXmlApplicationContext(
				"com/zdxh/instance/constructor.xml");
		System.out.println(ac.getBean("user"));
	}

}

4.测试结果

二、静态工厂实例化

该方法 在配置bean的时候,1.class要配置为工厂类,2.配置factory-method,值为工厂类中创建该对象的静态方法名字。代码如下:

1.创建自定义工厂类,该类有一个静态方法,用于创建User的对象,代码如下:

package com.zdxh.instance;

public class StaticFactory {
	//使用自己的工厂创建User实例
	public static User createUser() {
		return new User();
	}
}

2.配置

 

	<!-- 静态工厂实例化 class:静态工厂类,factory-method为工厂类中创建对象的静态方法-->
	<bean id="user2" class="com.zdxh.instance.StaticFactory"
		factory-method="createUser"/>

3.编写测试方法

	@Test
	void testStaticFactory() {
		ApplicationContext ac = new ClassPathXmlApplicationContext(
				"com/zdxh/instance/constructor.xml");
		System.out.println(ac.getBean("user2"));
	}

4.测试结果

 

三 、实例工厂实例化

    该方法要求工厂类中有一个普通方法创建对象,而在配置文件中要配置工厂类。

1.编写实例化工厂类:

package com.zdxh.instance;

public class InstanceFactory {
	public User createUser() {
		return new User();
	}
}

 2.配置实例化工厂类的bean和User的bean

配置代码

	<!-- 实例化工厂方式实例化对象User -->
	<!-- 配置工厂类 -->
	<bean id="instanceFactory" class="com.zdxh.instance.InstanceFactory"/>
	<!-- 配置User ,配置factory-bean为实例化工厂的bean的id,factory-method为工厂类中创建对象的方法 -->
	<bean id="user3" factory-bean="instanceFactory" factory-method="createUser"/>

3.测试方法

	@Test
	void testInstanceFactory() {
		ApplicationContext ac = new ClassPathXmlApplicationContext(
				"com/zdxh/instance/constructor.xml");
		System.out.println(ac.getBean("user3"));
	}

4.测试结果

    总结:Spring的实例化有三种方法,我们主要使用第一种方法,即构造方法实例化方法来实例化对象。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值