1. 程式人生 > >Spring注入---靜態工廠

Spring注入---靜態工廠

在上一篇的部落格中我們說Spring注入的一種方式---反射注入。今天我們繼續來看一下Spring注入的另外的一種方式---靜態的工廠

其實我們的注入,是利用到了配置的檔案,當然這種方式的注入有優點也有缺點,我們學習也僅僅是作為可以注入的方式來理解。

什麼事靜態的工廠:

       可以這樣理解:我們建立了一個工廠,在這個工廠裡面有很多的建立好的物件,我們需要做的是從工廠中將建立的物件取出來。

首先建立物件的實體類還是需要我們來建立的Person:

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 + "]";
	}

}

實體類建立好了之後,我們需要做的事情是建立一個工廠,在這個工廠裡面建立很多實體類的物件:

package com.wdg.test;

import java.util.HashMap;
import java.util.Map;

import com.wdg.domain.Person;

public class PersonStaticFactory {

	private static Map<Integer, Person> map = new HashMap<Integer, Person>();

	static {
		map.put(1, new Person("Honda", 30));
		map.put(2, new Person("Audi", 44));
		map.put(3, new Person("BMW", 54));
	}

	public static 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="bmwCar" class="com.wdg.test.PersonStaticFactory" factory-method="getPerson">
        <constructor-arg value="3"></constructor-arg>           
    </bean>

    <bean id="audiCar" class="com.wdg.test.PersonStaticFactory" factory-method="getPerson">
        <constructor-arg value="2"></constructor-arg>           
    </bean>
</beans>

我們可以看到的是工廠的方法是getPerson,並且引數是我們獲取到第幾個實體類,如何獲取到實體類,和上一篇的方式是一樣的:

    public static void main(String[] args) {
    	ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-beans.xml");
    	Person person = (Person) ctx.getBean("bmwCar");
    	System.out.println(person);
	}

執行輸出:

Person [name=BMW, age=54]

上面就是我們靜態工廠的一種獲取到實體類的一種辦法。如果感覺這篇文章還不錯,就掃一下紅包吧,看看你能賺多少:

                                                                                   

希望對你有所幫助!!