三種實例化bean的方式
1.使用類構造器實例化
<bean id=“orderService" class="cn.itcast.OrderServiceBean"/>
2.使用靜態工廠方法實例化
<bean id="persionServiceBean2" class="cn.com.xinli.service.impl.PersionServiceBeanFactory" factory-method="createPersionServiceBean"/>
public class PersionServiceBeanFactory
{
public static PersionServiceBean createPersionServiceBean()
{
return new PersionServiceBean();
}
}
例子:
(1).首先寫工廠類.他其中包含產生我們的業務bean的方法
- package cn.com.xinli.service.impl;
-
-
- public class PersionServiceBeanFactory
- {
- public static PersionServiceBean createPersionServiceBean()
- {
- return new PersionServiceBean();
- }
- }
package cn.com.xinli.service.impl;
public class PersionServiceBeanFactory
{
public static PersionServiceBean createPersionServiceBean()
{
return new PersionServiceBean();
}
}
(2).改寫beans.xml :包含工廠類類名和產生業務bean的方法名字
<bean id="persionServiceBean2" class="cn.com.xinli.service.impl.PersionServiceBeanFactory" factory-method="createPersionServiceBean"/>
(3) 測試
- ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
- PersionSevice ps=(PersionSevice)ctx.getBean("persionServiceBean2");
-
- ps.save();
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
PersionSevice ps=(PersionSevice)ctx.getBean("persionServiceBean2");
ps.save();
(4) 結果
2009-05-24 14:34:00,781 INFO (PersionServiceBean.java:12) - 我是save()方法!
3.使用實例工廠方法實例化:
<bean id="PersionServiceBeanFactory" class="cn.com.xinli.service.impl.PersionServiceBeanFactory"></bean>
<bean id="persionServiceBean3" factory-bean="PersionServiceBeanFactory" factory-method="createPersionServiceBean2"></bean>
public PersionServiceBean createPersionServiceBean2()
{
return new PersionServiceBean();
}
例子:
(1). 首先寫工廠類.他其中包含產生我們的業務bean的方法 ,在已有代碼的基礎上
- package cn.com.xinli.service.impl;
-
-
- public class PersionServiceBeanFactory
- {
- public static PersionServiceBean createPersionServiceBean()
- {
- return new PersionServiceBean();
- }
-
- <SPAN style="COLOR: #ff0000">public PersionServiceBean createPersionServiceBean2()
- {
- return new PersionServiceBean();
- }</SPAN>
-
- }
package cn.com.xinli.service.impl;
public class PersionServiceBeanFactory
{
public static PersionServiceBean createPersionServiceBean()
{
return new PersionServiceBean();
}
public PersionServiceBean createPersionServiceBean2()
{
return new PersionServiceBean();
}
}
(2).改寫beans.xml :寫兩個bean,一個是工廠bean,一個是利用工廠bean產生業務bean的bean.
- <bean id="PersionServiceBeanFactory" class="cn.com.xinli.service.impl.PersionServiceBeanFactory"></bean>
- <bean id="persionServiceBean3" factory-bean="PersionServiceBeanFactory" factory-method="createPersionServiceBean2"></bean>
<bean id="PersionServiceBeanFactory" class="cn.com.xinli.service.impl.PersionServiceBeanFactory"></bean>
<bean id="persionServiceBean3" factory-bean="PersionServiceBeanFactory" factory-method="createPersionServiceBean2"></bean>
(3) 測試
- ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
- PersionSevice ps=(PersionSevice)ctx.getBean("persionServiceBean3");
-
- ps.save();
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
PersionSevice ps=(PersionSevice)ctx.getBean("persionServiceBean3");
ps.save();
(4) 結果
2009-05-24 14:49:17,812 INFO (PersionServiceBean.java:12) - 我是save()方法!
(5) 注意,其實方式2和方式3的區別就在 工廠類中是如何產生業務bean的,方式2是static方式,方式3不是