1. 程式人生 > >Spring注入---例項工廠

Spring注入---例項工廠

在前面的兩篇文章中我們介紹了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]

上面就是我們例項工廠的模式來注入實體類了,希望對你有所幫助。如果感覺好,就掃下面的紅包吧,哈哈感謝

                                                                        

祝生活愉快