问题:
1、某一对象A依赖于接口B, 当使用spring为对象A注入接口B的实现类时, 接口B的实现类可能不确定,对于这种情况我们怎么处理?
2、某一对象A依赖于接口B, 但是接口B的实现类, 依赖于第三方库, 第三方库需要初始化、处理相关的类, 这种情况我们怎么处理?
针对上面的情况, 我们可以自己创建一个工厂, 让工厂创建所需要的实现类, 然后注入到对象A中
方法一:静态工厂方法
//静态工厂类 public class StaticFactory { //静态工厂方法 public static Bean3 getBean3Instance(String param){ System.out.println(param); return new Bean3Impl(); } } //XML文件配置 <bean id="bean3" class="com.spring.bean.StaticFactory" factory-method="getBean3Instance"> <!-- 传入工厂方法的参数--> <constructor-arg><value>paramvalue</value></constructor-arg> </bean> //需要注入bean3的地方 <bean name="bean" class="com.spring.bean.BeanImpl"> <property name="bean3" ref="bean3" /> </bean>
方法二:实例工厂方法
public class NoStaticFactory { public Bean3 getBean3Instance() { return new Bean3Impl(); } } <bean id="noStaticFactory" class="com.spring.bean.NoStaticFactory"> </bean> <bean id="bean3" factory-bean="noStaticFactory" factory-method="getBean3Instance"/>
方法三:继承spring提供的FactoryBean, 实现getObject方法
public class Bean3FactoryBean implements FactoryBean{ @Override public Object getObject() throws Exception { return new Bean3Impl(); } @Override public Class getObjectType() { return null; //To change body of implemented methods use File | Settings | File Templates. } @Override public boolean isSingleton() { return false; //To change body of implemented methods use File | Settings | File Templates. } } <bean id="bean3" class="com.spring.bean.Bean3FactoryBean" /> factory.getBean("bean3")是获取Bean3接口的实现类, factory.getBean("&bean3")获取Bean3FactoryBean 工厂实例
相关推荐
主要介绍了Spring工厂方法创建bean实例代码,具有一定借鉴价值,需要的朋友可以参考下
调用实例工厂方法创建bean,与调用静态工厂方法创建bean 的用法基本相似。 区别如下: ·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法...
实现spring底层原理。 例如spring是如何创建bean的等等。
在spring中,当属性是由工厂方法创造的,而不是用new关键字实例化的,就需要在applicationContext.xml配置工厂方法,是spring容器为我们自动注入属性
本项目为Java项目,使用Spring实现控制反转,对比简单工厂模式实现,适合初学者了解控制反转实现。
Spring依赖注入使用实例工厂设注入demo。完整可运行。
关于spring-工厂注入的实例代码,可以下载学习
spring核心工厂配置源码 Eclispe3.2+ Tomcate5.0
使用spring编写的工厂模式,来实现控制反转,并且面向切面编程。
通过实例工厂方法和静态工厂方法实例化spring bean的例子。
主要介绍了Spring实战之使用静态工厂方法创建Bean操作,结合实例形式分析了静态工厂方法创建Bean的相关实现步骤与操作注意事项,需要的朋友可以参考下
主要介绍了Spring的实例工厂方法和静态工厂方法实例代码,具有一定借鉴价值,需要的朋友可以参考下
JavaEE spring静态工厂创建实例
JavaEE spring实例工厂的实例方式
bean实例化三种方式:用构造器来实例化 、使用 静态工厂方法实例化 、使用实例工厂方法实例化 。总结,我们会选择第一种方式,因为spring的存在就是要消除工厂模式,因为工厂本身就会在每次调用时new出对象,只是把...
Spring教程 1 名词解释 2 Spring框架概述 3 Spring是什么? 3 Spring的历史 4 Spring的使命(Mission Statement) 4 Spring受到的批判 4 Spring包含的模块 5 总结 6 Spring的IoC容器 6 用户注册的例子 7 ...
Spring02_工厂模式与Spring入门.zip
提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。 Spring 上下文。向Spring 框架提供上下文信息,包括企业服务,如 JNDI、EJB、电子邮件、国际化、校验和调度等。 Spring AOP。通过配置管理...
以注解方式模拟Spring IoC AOP,了解Spring是如何实现的.
Spring教程 1 Spring框架概述 3 Spring是什么? 3 Spring的历史 4 Spring的使命(Mission Statement) 4 Spring受到的批判 4 Spring包含的模块 5 总结 6 Spring的IoC容器 6 用户注册的例子 7 面向接口编程 8 (用户...