当前位置:编程学习 > JAVA >>

Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean

工厂类代码:

[java]
package factorybean; 
 
import injection.MailConfig; 
 
public class NonStaticMailConfigFactory 

    public MailConfig getMailConfig(String mailServiceProvider) 
    { 
        if ("companyOne".equals(mailServiceProvider)) 
            return new MailConfigOfCompanyOne(); 
        if ("companyTwo".equals(mailServiceProvider)) 
            return new MailConfigOfCompanyTwo(); 
        return null; 
    } 

这个工厂类的方法与上一篇静态工厂类创建Bean中的工厂类中获取对象方法唯一区别就是它不是static的。

相对于使用static方法的工厂类,非静态工厂类在Spring的XML配置也有一点不同。

[html] 
<?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-3.0.xsd"> 
 
<!--     先定义工厂类的Bean --> 
    <bean id="mailConfigFactory" class="factorybean.StaticMailConfigFactory" /> 
<!--     这里factory-bean标签属性取上边定义的工厂类的Bean的Id,然后通过factory-method标签属性定义此工厂类中用于获取对象的非静态方法 --> 
    <bean name="mailConifg" 
       factory-bean="mailConfigFactory" 
       factory-method="getMailConfig" 
        <constructor-arg value="companyTwo" /> 
<!--     如上,仍然使用constructor-arg标签定义工厂类获取对象方法的参数 --> 
</bean> 
</beans> 

静态方法工厂类创建Bean中有比较详细的完整代码参考:http://blog.csdn.net/arvinrong/article/details/7734709

 Client代码中获取该类的方法仍没有改变:

[java] 
MailConfig mailConfig = context.getBean("mailConfig", MailConfig.class); 
作者:arvinrong

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,