(5)Spring实例化Bean

例子:http://blog.csdn.net/shuair/article/details/78572449

添加一个实现类

package shuai.spring.study;

public class HelloImpl2 implements HelloApi {
	private String message;

	public HelloImpl2() {
		this.message = "Hello World!2";
	}

	public HelloImpl2(String message) {
		this.message = message;
	}

	@Override
	public void sayHello() {
		System.out.println(message);
	}

}

配置文件

<?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="hello" class="shuai.spring.study.HelloImpl2"></bean>  

</beans>

测试类

package shuai.spring.test;

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

import shuai.spring.study.HelloApi;

public class HelloTest {

	@Test
	public void testHelloWorld() {
		@SuppressWarnings("resource")
		ApplicationContext context = new ClassPathXmlApplicationContext("HelloWorld.xml");
		HelloApi helloApi = context.getBean(HelloApi.class);
		helloApi.sayHello();

	}

}
实例化bean

一、使用构造器

1、使用空构造器

<bean id="hello" class="shuai.spring.study.HelloImpl2"></bean>

测试输出:Hello World!2

2、使用有参构造

<bean id="hello" class="shuai.spring.study.HelloImpl2">
    	<constructor-arg index="0" value="Hello Spring!"/>
</bean>
使用<constructor-arg>标签指定参数值,index表示参数位置,value表示参数值

测试输出:Hello Spring!

二、使用使用静态工厂方法

添加一个类

package shuai.spring.study;

public class HelloApiStaticFactory {
	// 工厂方法
	public static HelloApi newInstance(String message) {
		// 返回需要的Bean实例
		return new HelloImpl2(message);
	}
}
配置文件

<bean id="hello" class="shuai.spring.study.HelloApiStaticFactory" factory-method="newInstance">
    <constructor-arg index="0" value="静态工厂"/>
</bean>

使用class指定静态工厂方法所在的类,使用factory-method指定静态工厂方法(实例化bean的方法),如果方法有参数,像上面有参构造一样,使用constructor-arg。
输出结果:静态工厂

三、使用实例工厂

添加一个类

package shuai.spring.study;

public class HelloApiInstanceFactory {
	public HelloApi newInstance(String message) {
		return new HelloImpl2(message);
	}
}
配置文件

<bean id="beanInstanceFactory" class="shuai.spring.study.HelloApiInstanceFactory"/> 

<bean id="hello" factory-bean="beanInstanceFactory" factory-method="newInstance">
    <constructor-arg index="0" value="实例工厂"/>
</bean>

要先为实例工厂配置一个bean,在我们要实例化的bean里面使用factory-bean引入实例工厂,这里不能使用class,其它的都一样。

输出结果:实例工厂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值