`
wanxiaotao12
  • 浏览: 472045 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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" 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实例代码

    Spring工厂方法创建(实例化)bean实例代码 Spring框架中提供了多种方式来创建bean实例,包括通过构造器、静态工厂方法和实例工厂方法等。这种方式可以让开发者更好地控制bean的创建过程,实现更多的自定义需求。 ...

    模拟spring工厂模式底层实现。

    Spring的IoC(Inversion of Control,控制反转)容器就是通过工厂模式来工作的,它使用了工厂方法来创建对象,实现了对象的创建与业务逻辑的分离,从而增强了软件的可测试性和可维护性。 首先,我们需要理解什么是...

    实例化Spring bean的两种工厂方法

    本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...

    spring 实例的工厂方法 依赖注入属性,都使用property 元素确

    调用实例工厂方法创建bean,与调用静态工厂方法创建bean 的用法基本相似。 区别如下: ·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法...

    Spring依赖注入使用实例工厂设注入demo

    本示例将深入讲解如何在Spring中通过实例工厂方法实现依赖注入,并通过一个完整的可运行的`SpringIOCTest4`项目来展示这一过程。 首先,理解依赖注入的基本概念。依赖注入允许我们把一个对象(依赖)传递到另一个...

    spring工厂属性注入

    总结一下,Spring工厂属性注入的核心知识点包括: 1. `FactoryBean`接口:提供自定义对象创建逻辑。 2. 配置工厂bean:在`applicationContext.xml`中声明工厂bean,并指定工厂方法。 3. 属性注入:工厂bean创建的...

    Spring_控制反转_工厂模式

    在简单工厂模式中,工厂类负责决定实例化哪个类,客户端通过调用工厂方法获取所需对象,降低了客户端与具体实现类之间的耦合。 **Spring中的IoC与工厂模式对比** 虽然简单工厂模式在某些场景下能有效地创建对象,...

    spring-实例工厂注入

    在Spring框架中,实例工厂注入是一种创建对象的方式,它允许我们通过自定义的工厂方法来控制对象的实例化过程。这种方式对于那些初始化过程复杂或者需要特殊处理的对象特别有用。下面我们将详细探讨Spring中的实例...

    spring核心工厂配置源码

    本篇文章将深入探讨Spring的核心工厂配置源码,以及在Eclipse 3.2和Tomcat 5.0环境下如何进行开发。 首先,我们需要理解Spring中的Bean工厂,它是IoC容器的基础。Bean工厂负责管理对象的生命周期和依赖关系。在...

    使用spring编写的工厂模式

    在Spring框架中,我们可以利用其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,将工厂模式与Spring相结合,以更加灵活和解耦的方式创建和管理对象。...

    JavaEE spring静态工厂创建实例

    本篇将详细介绍如何在Spring中使用静态工厂方法来创建实例。 首先,让我们理解什么是静态工厂方法。静态工厂方法是类中的一个静态成员方法,它不依赖于类的实例,而是通过类名直接调用,返回一个对象。这种方法与...

    Spring的实例工厂方法和静态工厂方法实例代码

    Spring的实例工厂方法和静态工厂方法实例代码详解 Spring 框架中提供了两种方式来实例化 bean,分别是静态工厂方法和实例工厂方法。下面我们将详细介绍这两种方法的实现和使用。 一、静态工厂方法 静态工厂方法是...

    spring学习方法

    BeanFactory是一个工厂模式的实现,通过getBean方法获取Bean。 - **ApplicationContext**:这是一种更高级的容器,它继承了BeanFactory的功能,并添加了一些企业级服务的支持,如国际化支持、资源访问等。 **2. ...

    Spring实战之使用静态工厂方法创建Bean操作示例

    在Spring框架中,静态工厂方法是一种创建Bean对象的方式,它允许我们通过调用类中的静态方法来实例化对象,而不是直接使用new关键字。这种方式在某些特定场景下非常有用,例如当我们需要控制对象的创建过程或者对象...

    动态代理和工厂方法例子

    在编程领域,动态代理和工厂方法是两种非常重要的设计模式,它们在软件开发中起着至关重要的作用。这里我们将深入探讨这两种模式,并结合提供的文件名,即“005_Factory_Series_DesignPattern”和“006_Dynamic_...

    Spring02_工厂模式与Spring入门.zip

    工厂模式通常分为简单工厂模式、工厂方法模式和抽象工厂模式。在Java中,我们可以看到如何使用类或接口来实现这些模式,以提高代码的可维护性和可扩展性。 【Spring框架】是Java企业级应用开发中的一个核心框架,它...

    JavaEE spring实例工厂的实例方式

    2. **基于XML配置的实例工厂**:在Spring的XML配置文件中,可以使用`factory-bean`和`factory-method`属性来指定一个已存在的bean作为工厂,并指明工厂bean上的特定方法来创建新bean。这种方式下,`factory-bean`...

    Spring依赖注入使用静态工厂设注入demo

    2. **配置Spring XML**:然后,在Spring的配置文件中,我们需要声明这个工厂方法,指定其返回的对象类型,并为该bean提供一个唯一的ID。 ```xml ``` 3. **注入依赖**:现在,我们可以在其他需要使用`MyService`的...

    spring6pdf详细讲解

    Spring 提供了多种方式来实例化和管理 Bean,包括通过构造方法、简单工厂模式、FactoryBean 等。 Spring 还提供了多种范围的 Bean,包括 singleton、prototype 等。 Spring 的 IoC 容器是框架的核心组件,它负责...

    spring模板方法.zip

    标题中的"spring模板方法.zip"表明这是一个关于Spring框架的压缩包,特别提到了Spring Boot项目。模板方法设计模式是面向对象设计模式的一种,它在Spring框架中被广泛应用于简化代码和实现可扩展性。在Spring Boot中...

Global site tag (gtag.js) - Google Analytics