使用实例化工厂方法实例化bean,使用这种方法不能指定class属性,此时必须使用factory-bean属性来指定工厂bean,factory-method属性指定实例化bean的方法,而且使用实例化工厂方法允许指定方法参数,方式和使用构造器方法一样。
package org.spring.chapter2.helloworld;
public class HelloImpl2 implements HelloApi {
private String message;
public HelloImpl2() {
this.message="Hello World in Empty Constructor";
}
public HelloImpl2(String message) {
this.message = message;
}
@Override
public void sayHello() {
System.out.println(message);
}
}
package org.spring.chapter2.helloworld;
public class HelloApiInstanceFactory {
public HelloApi newInstance(String message){
return new HelloImpl2(message);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- id 表示你这个组件的名字,class表示组件类 -->
<!-- 实例化工厂bean -->
<bean id="beanInstanceFactory" class="org.spring.chapter2.helloworld.HelloApiInstanceFactory" />
<!-- 使用实例化工厂bean创建bean -->
<bean id="bean4" class="org.spring.chapter2.helloworld.HelloApiInstanceFactory"
factory-bean="beanInstanceFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Spring"></constructor-arg>
</bean>
</beans>
@Test
public void testInstanceFactory(){
ApplicationContext context = new ClassPathXmlApplicationContext("org/spring/chapter2/helloworld/helloworld4.xml");
HelloApi bean4 = context.getBean("bean4",HelloApi.class);
System.out.println("------------实例化工厂-----------------------");
bean4.sayHello();
}
分享到:
相关推荐
这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 首先,我们要知道Spring IoC容器是通过XML配置文件、注解或Java配置类来管理Bean的生命周期。Bean的...
实例化Spring Bean的工厂方法是实现定制化对象创建的一种方式,提供了比直接声明Bean更高的灵活性。开发者可以根据需求选择实例工厂方法或静态工厂方法,以满足特定的应用场景。在实际项目中,应根据实际情况权衡...
**静态工厂方法实例化**则涉及到使用类的静态方法来创建Bean。在配置中,我们需要提供`factory-bean`(工厂Bean的ID)和`factory-method`(工厂方法名)。例如: ```xml <bean id="exampleBean" factory-bean=...
本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...
- **工厂方法**:可以定义一个静态或非静态工厂方法,Spring调用这个方法来实例化bean。 3. **依赖注入(DI)** Spring的依赖注入允许bean之间通过接口而非具体实现进行耦合,提高了代码的可测试性和可维护性。...
自Spring 2.5引入注解支持后,可以通过在类或方法上使用注解来实例化Bean。最常用的是`@Component`(以及它的派生注解如@Service、@Repository、@Controller),它将类声明为Spring Bean。然后,通过`@Autowired`...
这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态工厂方法配置Bean是通过调用类中静态工厂方法来创建对象的方式。这种方式下,Spring并不直接实例化目标类,而是调用...
在Spring框架中,实例化Bean是管理对象生命周期的关键部分。Spring提供了多种方式来创建和管理Bean,这使得我们可以根据项目需求灵活选择最佳实践。本文将详细介绍Spring中的三种主要的Bean实例化方式:XML配置、...
静态工厂方法实例化是指使用静态工厂方法来实例化Bean。这种方法需要创建一个静态工厂类,该类提供一个静态方法用于实例化Bean。在上面的示例代码中,我们定义了一个HelloWorldFactory类,它提供了一个静态方法...
本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`<bean>`...
Spring工厂方法创建(实例化)bean实例代码 Spring框架中提供了多种方式来创建bean实例,包括通过构造器、静态工厂方法和实例工厂方法等。这种方式可以让开发者更好地控制bean的创建过程,实现更多的自定义需求。 ...
首先,我们需要定义一个工厂类并提供一个返回Bean实例的方法,然后在Spring配置文件中,除了`class`属性指向工厂类,还需要额外定义一个`bean`来实例化工厂类,如`myBean3Factory`。获取Bean实例时,Spring容器会先...
3. **实例化Bean**:容器根据配置信息创建Bean实例。 4. **初始化**:容器可能会调用Bean的特定方法(如init方法)进行初始化操作。 联系信息提供了QQ号,这意味着如果在配置或使用过程中遇到问题,可以通过该联系...
如果一个BeanA依赖于另一个BeanB,同时BeanB也依赖于BeanA,那么Spring在处理依赖关系时可能会陷入循环引用,导致两个Bean都实例化两次。 3. **@PostConstruct与初始化回调**:Spring允许我们在Bean初始化后执行...
当Spring容器遇到一个被标记为FactoryBean的Bean定义时,它不会直接实例化这个Bean,而是调用`getObject()`方法来获取实际需要的对象。 在实际应用中,工厂Bean有多种用途。例如: 1. **复杂初始化逻辑**:如果一...
Home接口提供了创建、查找和删除实体Bean实例的方法。 4. **实体Bean示例**:假设有一个名为`Student`的数据表,包含`STUID`、`STUNAME`和`LOCKERID`三个字段。为了创建一个对应于该数据表的实体Bean,首先需要...
通过对 Spring Bean 实例化的了解,我们可以更好地使用 Spring 框架来开发企业级应用程序。 knowledge points: * Spring Bean 实例化是 Spring 框架中一个非常重要的概念。 *Spring 容器会自动调用 Bean 的无参...
多线程实例化bean,创建多线程时可注入
进入`DefaultListableBeanFactory`的`preInstantiateSingletons()`方法,这个方法遍历所有的Bean定义,对于单例模式的Bean,进行实例化。 5. **获取Bean实例**: 在预实例化过程中,`getBean(beanName)`被调用,...
在Spring框架中,我们可以使用多种方式来初始化Bean,下面我们将介绍两种常见的方式: 1、使用@Bean的initMethod 在使用@Bean注解时,我们可以使用initMethod属性来指定Bean的初始化方法。例如: ```java @Bean...