spring实例化bean的方式
1、构造方法实例化bean
无参构造部分代码
<bean id="bean1" name="bean1_2" class="com.my.Bean1"/>
public class Bean1 {
}
2、静态工厂实例化bean
<bean id="bean2" class="com.my.Bean2Factory" factory-method="getBean2"/>
public class Bean2 {
}
public class Bean2Factory {
public static Bean2 getBean2() {
return new Bean2();
}
}
3、实例工厂实例化bean
<bean id="bean3Factory" class="com.my.Bean3Factory"/>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"/>
public class Bean3Factory {
public Bean3 getBean3() {
return new Bean3();
}
}
测试
public static void main(String[] args) throws Exception{
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
Bean1 bean1 = context.getBean("bean1",Bean1.class);
System.out.println("bena1="+bean1);
Bean1 bean1_2 = context.getBean("bean1_2",Bean1.class);
System.out.println("bean1_2="+bean1_2);
Bean2 bean2 = context.getBean("bean2",Bean2.class);
System.out.println("bena2="+bean2);
Bean3 bean3 = context.getBean("bean3",Bean3.class);
System.out.println("bena3="+bean3);
}
有的同学问:静态工厂和实例工厂获取bean的方式有何不同?
简单说一下:通过静态工厂获取bean,不需要实例化静态工厂类,直接调用静态方法;而实例工厂则需要先创建实例工厂的对象,再由此对象调用方法获取bean。