Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
来源:互联网 发布:淘宝版权怎么投诉 编辑:程序博客网 时间:2024/06/05 12:47
同上一篇中静态工厂类创建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.csdn.net/arvinrong/article/details/7734709
Client代码中获取该类的方法仍没有改变:
MailConfig mailConfig = context.getBean("mailConfig", MailConfig.class);
- Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
- Spring学习笔记 使用Static Factory(静态工厂类)创建Bean
- Spring学习笔记 使用Static Factory(静态工厂类)创建Bean
- Spring使用静态工厂方法创建Bean
- Spring使用静态工厂方法创建Bean
- Spring使用静态工厂方法创建Bean(一)
- Spring Bean工厂创建Bean实例的方法之使用静态工厂类
- spring学习笔记(17)--通过工厂方法创建Bean
- Static Factory(静态工厂、简单工厂)
- Spring:Spring使用静态工厂方法创建Bean
- 学习Spring(二) 调用静态工厂方法创建Bean
- 【spring notes】 使用静态工厂方法创建Bean
- 转:Spring使用静态工厂方法创建Bean
- Spring笔记之五(分层 Bean Factory 使用)
- spring in action 学习笔记(三)通过工厂方法创建bean
- Spring学习之使用静态工厂方法以及实例工厂方法配置bean
- Spring Bean工厂创建Bean实例的方法之使用工厂类
- Spring入门学习——调用静态工厂方法创建Bean
- Java AIO初探(异步网络IO)
- SQL Server Join Example
- Sicily 2499
- 简单的AsyncTask使用例子
- Lustre可靠性增强系统MTFS:第4篇 下层文件系统支持
- Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
- 截取《C专家编程》中的语言声明优先级规则
- java中hashcode()和equals()的详解
- PHP+MySql和ASP中获取新添加记录的ID值
- mongodb_数据类型(null/字符串/数字/日期/内嵌文档/数组等)
- 黑马程序员学习日记------openFileialog的用法
- Android AlertDialog 对话框添加、属性
- python paramiko ssh远程连接
- Linux笔记