Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
2012-07-14 13:59
453 查看
同上一篇中静态工厂类创建Bean类似,唯一不同的是工厂类中获取实际对象的方法比如:getInstance() 不是静态方法(non-static)。
工厂类代码:
这个工厂类的方法与上一篇静态工厂类创建Bean中的工厂类中获取对象方法唯一区别就是它不是static的。
相对于使用static方法的工厂类,非静态工厂类在Spring的XML配置也有一点不同。
静态方法工厂类创建Bean中有比较详细的完整代码参考:/article/10863030.html
Client代码中获取该类的方法仍没有改变:
工厂类代码:
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中有比较详细的完整代码参考:/article/10863030.html
Client代码中获取该类的方法仍没有改变:
MailConfig mailConfig = context.getBean("mailConfig", MailConfig.class);
相关文章推荐
- Spring学习笔记 使用Static Factory(静态工厂类)创建Bean
- Spring学习笔记 使用Static Factory(静态工厂类)创建Bean
- Spring 学习总结 使用静态工厂创建Bean
- spring学习笔记(12)——使用注解方式配置bean
- Spring学习笔记--通过构造方法创建Bean
- 【Spring学习笔记】之【5.4 Bean中使用EL】
- 【spring学习笔记一】使用xml文件配置bean
- spring in action 学习笔记(三)通过工厂方法创建bean
- Spring学习笔记 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
- Spring学习笔记 使用annotation配置实现Bean的auto-wiring (自动绑定)
- Spring学习笔记 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
- Java框架spring 学习笔记(十):bean管理(注解和配置文件混合使用)
- Spring学习笔记 关于Bean属性的初始化 - 使用inner bean以及List, Map与Set的初始化
- Spring学习(三)使用Spring容器创建bean
- Spring学习笔记 使用XML配置实现Bean的auto-wiring (自动绑定)
- Spring学习笔记---使用MyBatis Generator自动创建代码
- Spring入门学习——使用Spring的FactoryBean创建Bean
- Spring学习笔记 关于FactoryBean接口的使用
- Spring学习笔记(四) JavaConfig创建Bean与AOP编程相结合的Demo
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件