之前都是通过相关类的构造方法来配置bean,本文将讲述如何通过静态工厂方法来配置bean。
1 新建User类如下:
package com.gm.spring_test;
public class User {
private int age;
private String name;
@Override
public String toString() {
return "User [name = " + name + ", age = " + age + "]";
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2 新建静态工厂方法类:
package com.gm.spring_test;
import java.util.HashMap;
import java.util.Map;
public class StaticFactoryMethod {
public static Map<String, User> map = new HashMap<String, User>();
static {
map.put("first", new User("gongmin1", 20));
map.put("second", new User("gongmin2", 21));
}
public static User getUser(String key){
return map.get(key);
}
}
3 修改配置spring-conf.xml如下:
<?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="User" factory-method="getUser"
class="com.gm.spring_test.StaticFactoryMethod">
<constructor-arg value="first"></constructor-arg>
</bean>
</beans>
ApplicationContext context = new ClassPathXmlApplicationContext("spring-conf.xml");
User user = (User) context.getBean("User");
System.out.println(user);
5 结果显示:
User [name = gongmin1, age = 20]