Spring 使用静态工厂方式实例化Bean

知识点介绍:

静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让spring管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过spring注入的形式获取。

【转载使用,请注明出处:http://blog.csdn.net/mahoking

操作步骤:

1、创建Speaker对象。

/**
 * 静态工厂类
 *
 */
public class Speaker {

	private String name ;
	private String topic;
	private int timeHour;

	private static Speaker speaker = null;

	private Speaker() {

		this.name = "Jacke";
		this.topic = "play football!";
		this.timeHour = 2;

	}

	/**
	 * 工厂方法
	 * @return
	 */
	public static Speaker getInstance() {

		if(null==speaker){
			speaker = new Speaker();
		}
		return speaker;
	}

	/**
	 * 演讲
	 */
	public void speech() {
		System.out.println(toString());
	}

	@Override
	public String toString() {
		return "Speaker [name=" + name + ", topic=" + topic + ", timeHour="
				+ timeHour + "]";
	}
}

2、创建Spring配置文件beanLearn03.xml。

<?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">

	<!-- Learn 03使用静态工厂方式实例化Bean -->
	<!--使用有参数构造参数-->
	<bean id="speaker03" class="com.mahaochen.spring.learn03.Speaker" factory-method="getInstance">
	</bean>

</beans>

3、将Spring配置文件beanLearn03.xml引入到主配置文件beans.xml中。

<!-- Learn 03  使用静态工厂方式实例化Bean -->
	<import resource="com/mahaochen/spring/learn03/beanLearn03.xml"/>

4、编写测试类TestSpring03.java。

public class TestSpring03 {

	public static void main(String[] args) {
		BeanFactory beanFactory = new ClassPathXmlApplicationContext("beans.xml");
		//使用静态工厂方式实例化Bean
		Speaker speaker03 = beanFactory.getBean("speaker03", Speaker.class);
		speaker03.speech();
	}
}

【转载使用,请注明出处:http://blog.csdn.net/mahoking

时间: 2024-08-09 02:18:57

Spring 使用静态工厂方式实例化Bean的相关文章

Spring 使用实例工厂方法实例化Bean

知识点介绍: 实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先new工厂类,再调用普通的实例方法. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 操作步骤: 1.创建Speaker对象. public class Speaker { //使用实例工厂方法实例化Bean private String speakerName; public Speaker(String speakerName) { this.speakerName = speak

跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参的构造器 2.依赖注入的方式 1)属性注入:通过setter方法注入Bean的属性值或依赖的对象 属性注入使用<Property>元素,使用name指定Bean的属性名称,使用value指定Bean的属

跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Respository:标识持久层组件 3.@Service:标识业务层组件 4.@Controller:标识表现层组件 Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称 当在组件类上使用了特定的注解之后, 还需要在 Spring 的配置文件

spring之通过静态工厂方法配置Bean

Car.java package com.gong.spring.beans.factory; public class Car { private String name; private double price; public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } p

实例/静态工厂方法得到bean

<bean id="a" class="com.yundaex.wms.config.TestBeanChild" /> <bean id="b" class="com.yundaex.wms.config.TestBeanChild" factory-bean="a" factory-method="createDefault" /> public class

Spring实例化bean的三种方式

在面向对象编程的过程中,要想调用某个类的成员方法,首先要实例化该类的成员变量. 在Spring 中,实例化Bean有三种方式: 1.构造器实例化:2.静态工厂方式实例化:3.实例化工厂方式实例化 构造器实例化:Spring容器通过Bean对应的类中默认的构造器函数实例化Bean. 1-1.创建一个实体类 Person1 package com.mengma.instance.constructor; public class Person1 { } 1-2.创建Spring配置文件,在 com.

Spring—IOC容器如何实例话Bean

前言  传统应用程序可以通过new和反射的方式来实例化Bean.而Spring Ioc容器则需要根据配置元数据使用反射机制来创建Bean.在Spring Ioc容器中根据Bean创建Bean实例有以下几种方式. (1).使用构造器实例化Bean (2).使用静态工厂实例化Bean (3).使用实例工厂实例化Bean 一.使用构造器实例化Bean:Spring IoC容器能使用默认空构造器也能使用有参数构造器两种方式创建Bean. (a).使用空构造器进行定义,使用此种方式,class属性指定的类

Spring(十三):使用工厂方法来配置Bean的两种方式(静态工厂方法&amp;实例工厂方法)

通过调用静态工厂方法创建Bean 1)调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不需要关心创建对象的具体细节. 2)要声明通过静态方法创建的Bean,需要在Bean的class属性中指定拥有该工厂的方法的类,同时需要在bean的factory-method属性里指定工厂方法的名称.最后,使用<constructor-arg>元素为该方法传递方法参数. 示例: 第一步:创建一个java project,导入包: 第二步:创建c

spring三种实例化bean的方式

1构造函数实例化 2静态工厂方法实例化 3实例工厂方法实例化 service接口: package service; public interface PersonService { public void save(); } PersonServiceBean: package service.impl; import service.PersonService; public class PersonServiceBean implements PersonService { public