spring xml 配置 工廠注入
阿新 • • 發佈:2018-11-06
請注意,是通過工廠注入bean,而不是注入工廠。
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"> <!-- 靜態工廠 --> <bean id="person" class="tang.StaticFactory" factory-method="getPerson"> <constructor-arg name="name" value="tangxiansheng"></constructor-arg> <constructor-arg name="age" value="19"></constructor-arg> </bean> <!-- 例項工廠 --> <bean id="instanceFactory" class="tang.InstanceFactory"></bean> <!-- 引用例項工廠 factory-bean指定例項工廠,factory-method指定工廠中方法 --> <bean id="person1" class="tang.Person" factory-bean="instanceFactory" factory-method="getPerson"> <constructor-arg name="name" value="tangmouren"></constructor-arg> <constructor-arg name="age" value="20"></constructor-arg> </bean> </beans>
public static void main(String[] args){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); Person person = ac.getBean("person",Person.class); System.out.println(person); Person person1 = ac.getBean("person1",Person.class); System.out.println(person1); }
class bean
例項工廠
package tang;
public class InstanceFactory {
public Person getPerson(String name, Integer age){
return new Person(name, age);
}
}
靜態工廠
package tang; public class StaticFactory { public static Person getPerson(String name,Integer age){ return new Person(name,age); } }
實體
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 + "]";
}
}
輸出
Person [name=tangxiansheng, age=19, car=null]
Person [name=tangmouren, age=20, car=null]