spring FactoryBean 配置bean
阿新 • • 發佈:2018-11-06
首先寫一個實體
然後定義PersonFactoryBean,該Class需要實現FactoryBean介面。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 + "]"; } }
加入兩個屬性,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
TestClass<?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>
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = ac.getBean("person",Person.class);
System.out.println(person);
輸出
Person [name=tangxiansheng, age=22]