Spring注入---靜態工廠
阿新 • • 發佈:2018-12-08
在上一篇的部落格中我們說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]
上面就是我們靜態工廠的一種獲取到實體類的一種辦法。如果感覺這篇文章還不錯,就掃一下紅包吧,看看你能賺多少:
希望對你有所幫助!!