Spring实例化Bean的方式有三种:
构造器实例化,静态工厂方法实例化,实例工厂方法实例化。
一,构造器实例化:
XML代码:
<bean id="testBean" class="com.test.bean.TestBean"></bean>
使用这种方式,class指定类必须有空构造函数。
java代码:
public void instanceBean(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
TestBean testBean = as.getBean("testBean",TestBean.class);//得到TestBean的实例
}
二,静态工厂方法实例化:
XML代码:
<bean id="testBean" class="BeanFactory" factory-method="getTestBeanInstance"></bean>
使用这种方式需要指定class,factory-method,实例化bean的静态工厂方法允许指定方法参数
需要有工厂类及静态工厂方法。
java代码:
public class BeanFactory{
public static TestBean getTestBeanInstance(){
return new TestBean();
}
}
public void instanceBean(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
TestBean testBean = as.getBean("testBean",TestBean.class);//得到TestBean的实例
}
三,实例工厂方法实例化:
XML代码:
<bean id="beanFactory" class="BeanFactory"></bean>
<bean id="testBean" factory-bean="beanFactory" factory-method="getTestBeanInstance"></bean>
第一个bean配置的是工厂类,第二个bean配置的是实例化bea的方法。
java代码:
public class BeanFactory{
public TestBean getTestBeanInstance(){//非静态
return new TestBean();
}
}
public void instanceBean(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
TestBean testBean = as.getBean("testBean",TestBean.class);//得到TestBean的实例
}
总结:从上面可以看出三种实例化bean的方式只是xml配置不同,得到Bean实例的方式完全相同。这就是IOC得到bean的魅力:简单,强大!