首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring工场方法

2013-09-11 
spring工厂方法问题:1、某一对象A依赖于接口B, 当使用spring为对象A注入接口B的实现类时, 接口B的实现类可

spring工厂方法

问题:

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" factory-method="getBean3Instance"><!-- 传入工厂方法的参数--><constructor-arg><value>paramvalue</value></constructor-arg>??? </bean>//需要注入bean3的地方??? <bean name="bean" ref="bean3" />   </bean>?

方法二:实例工厂方法

?

public class NoStaticFactory {    public Bean3 getBean3Instance() {        return new Bean3Impl();    }}    <bean id="noStaticFactory" 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" />factory.getBean("bean3")是获取Bean3接口的实现类, factory.getBean("&bean3")获取Bean3FactoryBean 工厂实例

?

热点排行