欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(5)Spring实例化Bean

程序员文章站 2022-05-21 19:18:06
...

例子: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,其它的都一样。

输出结果:实例工厂