1、使用静态工厂方法创建Bean
首先,静态工厂:
public class MusicBoxFactory {
// 工厂方法
public static IMusicBox createMusicBox(){
return new IMusicBox(){
public void play(){
System.out.println("播放钢琴音乐...");
}
};
}
}
该静态方法创建一个IMusicBox接口的实例
则,在xml配置文件中,做如下配置:
<bean id="musicBox" class="onlyfun.caterpillar.MusicBoxFactory" factory-method="createMusicBox"/>
这里定义的musicBox指的是由静态方法创建出来的IMusicBox实例
2、使用实例工厂方法创建Bean
实例工厂代码如下:
public class SomeFactory {
public IMusicBox createInstance(){
return new IMusicBox(){
public void play(){
System.out.println("播放piano音乐...");
}
};
}
}
实例工厂没有静态工厂方法,所以首先要创建出实例工厂本身的对象,再调用对象的createInstance()工厂方法创建目标对象,所以XML配置为:
<bean id="factoryBean" class="onlyfun.caterpillar.SomeFactory"/>
<bean id="some" factory-bean="factoryBean" factory-method="createInstance"/>
第一句,先定义了实例工厂,然后通过对ID为some的bean的获取,先创建实例工厂对象,再调用工厂对象的工厂方法创建目标对象,此时无需指定bean的class属性。
测试代码:
public class SpringDemo {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
IMusicBox musicBox = (IMusicBox)context.getBean("musicBox");
musicBox.play();
IMusicBox musicBox2 = (IMusicBox)context.getBean("some");
musicBox2.play();
}
}
打印出结果:
播放钢琴音乐...
播放piano音乐...
分享到:
相关推荐
本篇将详细介绍如何在Spring中使用静态工厂方法来创建实例。 首先,让我们理解什么是静态工厂方法。静态工厂方法是类中的一个静态成员方法,它不依赖于类的实例,而是通过类名直接调用,返回一个对象。这种方法与...
Spring IOC 04 配置通过静态工厂方法创建的bean、实例工厂创建的bean、FactoryBean (1)bean的创建默认就是框架利用反射new出来的bean实例; (2)工厂模式:工厂帮我们创建对象,有一个专门帮我们创建对象的类,这...
在Spring框架中,Bean的创建方式多样,其中两种常见的非XML配置方式是通过静态工厂方法和实例工厂方法来创建Bean。这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态...
静态工厂方法与实例工厂方法类似,区别在于它不依赖于工厂类的实例,而是直接调用工厂类的静态方法来创建Bean。配置如下: ```xml <bean id="exampleBean" factory-class=...
在Spring框架中,静态工厂方法是一种创建Bean对象的方式,它允许我们通过调用类中的静态方法来实例化对象,而不是直接使用new关键字。这种方式在某些特定场景下非常有用,例如当我们需要控制对象的创建过程或者对象...
调用实例工厂方法创建bean,与调用静态工厂方法创建bean 的用法基本相似。 区别如下: ·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法...
**静态工厂方法实例化**则涉及到使用类的静态方法来创建Bean。在配置中,我们需要提供`factory-bean`(工厂Bean的ID)和`factory-method`(工厂方法名)。例如: ```xml <bean id="exampleBean" factory-bean=...
Spring框架中提供了多种方式来创建bean实例,包括通过构造器、静态工厂方法和实例工厂方法等。这种方式可以让开发者更好地控制bean的创建过程,实现更多的自定义需求。 通过构造器方式创建bean实例 在Spring中,...
与静态工厂方法类似,实例工厂方法也用于通过调用一个非静态方法来创建Bean实例。不同之处在于,这个方法是在一个已实例化的对象上调用的,而非在类级别上。这提供了更高级别的灵活性,因为可以利用实例工厂对象的...
这通常包括编写JUnit测试用例,以确保`SomeOtherClass`中的`myService`实例正确地被静态工厂方法创建的`MyService`实例填充。 总结来说,Spring框架通过静态工厂方法进行依赖注入提供了一种灵活的创建对象的方式。...
4. **静态工厂方法或Singleton作用域**:如果使用静态工厂方法创建Bean,且未正确配置单例模式,那么每次请求都会创建新的Bean实例。对于Singleton作用域的Bean,Spring保证在整个容器生命周期内只有一个实例,如果...
Spring IOC实例化Bean有三种方法:构造器实例化、静态工厂方法实例化和实例工厂方法实例化。每种方法都有其优缺,选择哪种方法取决于实际需求。 在实际开发中,我们可以根据需要选择合适的实例化方法。例如,如果...
这意味着,我们可以通过静态工厂方法来创建 Bean 实例,而不是通过容器来实例化 Bean。 例如,在 com.itheima.instance.static_factory 包中,我们定义了一个静态工厂类 MyBean2Factory,该类提供了一个静态方法 ...
本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`<bean>`...
- **工厂方法**:可以定义一个静态或非静态工厂方法,Spring调用这个方法来实例化bean。 3. **依赖注入(DI)** Spring的依赖注入允许bean之间通过接口而非具体实现进行耦合,提高了代码的可测试性和可维护性。...
Bean对象的创建有多种方式,这里主要探讨三种常用的方法:无参构造方法创建、静态工厂创建和实例工厂创建。接下来,我们将详细讲解每一种方法,并通过代码实例来加深理解。 ### 一、使用无参构造方法创建 Spring...
在运行时,Spring容器会使用无参构造器来创建Bean实例。在`InstanceTest1`测试类中,通过`ClassPathXmlApplicationContext`加载配置文件并获取Bean实例。 第二种实例化方式是**静态工厂方式实例化**。这种方式需要...
静态工厂和实例工厂是两种常见的实现方式,它们允许开发者通过预定义的工厂方法来生成Bean,而`BeanPostProcessor`则提供了一种通用的后处理方式,可以在Bean生命周期的不同阶段进行干预。理解并熟练运用这些机制,...
- 使用实例工厂方法实例化:类似于静态工厂方法,但工厂方法是非静态的,需要先创建工厂类的实例后再调用。 - Bean的配置: - id和name:id属性是Bean的标识符,name属性可以包含特殊字符,且可以有多个别名。 -...
构造方法实例化允许我们在初始化Bean时传入必要的参数,而静态工厂和实例工厂方法则提供了更多的灵活性,比如在创建Bean时返回不同类型的实例或执行额外的逻辑。在实际开发中,开发者可以根据需求选择最适合的实例化...