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

本文介绍了如何在Spring中使用非静态工厂类创建Bean,与静态工厂类的区别在于工厂方法不是静态的。详细阐述了非静态工厂类的配置及客户端代码的获取方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


同上一篇中静态工厂类创建Bean类似,唯一不同的是工厂类中获取实际对象的方法比如:getInstance() 不是静态方法(non-static)。

工厂类代码:

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配置也有一点不同。

<?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.youkuaiyun.com/arvinrong/article/details/7734709

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

 MailConfig mailConfig = context.getBean("mailConfig", MailConfig.class);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值