XML 通过实例工厂方法注入 Bean
区别
通过实例工厂方法注入与通过静态工厂方法注入类似,区别有两点:
- 实例工厂方法不是静态方法,静态工厂方法是静态方法
- 实例工厂方法注入时的配置,需要先配置一个实例工厂类的 Bean ,然后根据该工厂 Bean 创建所需要的 Bean
示例
User.java
public class User {
private String name;
private int age;
public User() {
System.out.println("调用User类的无参构造方法");
}
public void sayHello(String name){
System.out.println("hello, " + name + "!");
}
// 省略getter和setter
}
UserFactory.java
public class UserFactory {
public User getInstance(){
return new User();
}
}
通过实例工厂方法注入
<bean class="org.daistudy.UserFactory" id="userFactory"/>
<bean class="org.daistudy.User" id="user3" factory-bean="userFactory" factory-method="getInstance"/>
应用
// 省略 Spring 的 IoC 容器初始化过程 ClassPathXmlApplicationContext("..")
User user = (User) context.getBean("user3");
ser.sayHello("赵六");