Spring注入---例項工廠
阿新 • • 發佈:2019-01-12
在前面的兩篇文章中我們介紹了Spring通過反射的機制注入,和靜態的工廠兩種方式的注入,在這一篇文章中我們用例項工廠的注入發放來實現建立物件
首先我們還是需要有一個實體類:
package com.wdg.domain; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
例項工廠和靜態工廠的區別在於,靜態的工廠是在java程式碼裡面來建立例項物件,但是例項工廠是在配置檔案中給物件進行賦值
我們需要建立一個例項工廠:
package com.wdg.test; import java.util.HashMap; import java.util.Map; import com.wdg.domain.Person; public class PersonInstanceFactory { private Map<Integer, Person> map = new HashMap<Integer, Person>(); public void setMap(Map<Integer, Person> map) { this.map = map; } public PersonInstanceFactory() { } public Person getPerson(int id) { return map.get(id); } }
上面就是建立了一個例項的工廠,我們接下來要做的就是寫配置檔案,前面說了例項工廠和靜態工廠的區別在於,例項工廠是在配置檔案中給物件進行賦值。
<?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="PersonFactory" class="com.wdg.test.PersonInstanceFactory"> <property name="map"> <map> <entry key="4"> <bean class="com.wdg.domain.Person"> <property name="age" value="4"></property> <property name="name" value="Honda"></property> </bean> </entry> <entry key="6"> <bean class="com.wdg.domain.Person"> <property name="age" value="6"></property> <property name="name" value="ford"></property> </bean> </entry> </map> </property> </bean> <bean id="person" factory-bean="PersonFactory" factory-method="getPerson"> <constructor-arg value="4"></constructor-arg> </bean> <bean id="person" factory-bean="PersonFactory" factory-method="getPerson"> <constructor-arg value="6"></constructor-arg> </bean> </beans>
然後我們執行:
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-beans.xml");
Person person = (Person) ctx.getBean("person");
System.out.println(person);
}
輸出結果:Person [name=Honda, age=4]
上面就是我們例項工廠的模式來注入實體類了,希望對你有所幫助。如果感覺好,就掃下面的紅包吧,哈哈感謝
祝生活愉快