spring FactoryBean 配置bean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangyaliang11/article/details/79216282

首先写一个实体

package tang;
public class Person {
	private String name;
	private Integer age;
	public Person() {
		System.out.println("person");
	}
	public Person(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
}
然后定义PersonFactoryBean,该Class需要实现FactoryBean接口。

加入两个属性,name与age,并加入set方法。

package tang;

import org.springframework.beans.factory.FactoryBean;

public class PersionFactoryBean implements FactoryBean<Person> {

	private String name;
	public void setName(String name) {
		this.name = name;
	}
	private Integer age;
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public Person getObject() throws Exception {
		return new Person(name ,age);
	}

	@Override
	public Class<?> getObjectType() {
		return Person.class;
	}

	@Override
	public boolean isSingleton() {
		return false;
	}
}

applicationContext.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"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
	<!-- 通过FactoryBean 注入bean 下面两个属性是赋值给PersionFactoryBean中的name与age,Person实例实际是由getObject返回的-->
	<bean id="person" class="tang.PersionFactoryBean" >
		<property name="name" value="tangxiansheng"></property>
		<property name="age" value="22"></property>
	</bean>
</beans>
TestClass

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		Person person = ac.getBean("person",Person.class);
		System.out.println(person);

输出

Person [name=tangxiansheng, age=22]






猜你喜欢

转载自blog.csdn.net/tangyaliang11/article/details/79216282