`
liuyiyou
  • 浏览: 23400 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

使用实例化工厂方法实例化bean

 
阅读更多

使用实例化工厂方法实例化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实例化Bean顺序

    这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 首先,我们要知道Spring IoC容器是通过XML配置文件、注解或Java配置类来管理Bean的生命周期。Bean的...

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

    实例化Spring Bean的工厂方法是实现定制化对象创建的一种方式,提供了比直接声明Bean更高的灵活性。开发者可以根据需求选择实例工厂方法或静态工厂方法,以满足特定的应用场景。在实际项目中,应根据实际情况权衡...

    Spring项目bean实例化代码

    **静态工厂方法实例化**则涉及到使用类的静态方法来创建Bean。在配置中,我们需要提供`factory-bean`(工厂Bean的ID)和`factory-method`(工厂方法名)。例如: ```xml &lt;bean id="exampleBean" factory-bean=...

    Spring 实例化Bean的三种方式

    本文将深入探讨Spring中实例化Bean的三种主要方式:构造器注入、静态工厂方法注入以及实例工厂方法注入。 #### 1. 构造器注入(Constructor Injection) 构造器注入是指通过调用Bean类的构造器来创建Bean实例。...

    SpingIOC注入实例化bean

    - **工厂方法**:可以定义一个静态或非静态工厂方法,Spring调用这个方法来实例化bean。 3. **依赖注入(DI)** Spring的依赖注入允许bean之间通过接口而非具体实现进行耦合,提高了代码的可测试性和可维护性。...

    Sping学习笔记(2)----实例化Bean的三种方式

    自Spring 2.5引入注解支持后,可以通过在类或方法上使用注解来实例化Bean。最常用的是`@Component`(以及它的派生注解如@Service、@Repository、@Controller),它将类声明为Spring Bean。然后,通过`@Autowired`...

    SSH笔记-静态/实例工厂方法配置bean

    这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态工厂方法配置Bean是通过调用类中静态工厂方法来创建对象的方式。这种方式下,Spring并不直接实例化目标类,而是调用...

    Spring的三种实例化Bean的方式

    在Spring框架中,实例化Bean是管理对象生命周期的关键部分。Spring提供了多种方式来创建和管理Bean,这使得我们可以根据项目需求灵活选择最佳实践。本文将详细介绍Spring中的三种主要的Bean实例化方式:XML配置、...

    浅谈springioc实例化bean的三个方法

    静态工厂方法实例化是指使用静态工厂方法来实例化Bean。这种方法需要创建一个静态工厂类,该类提供一个静态方法用于实例化Bean。在上面的示例代码中,我们定义了一个HelloWorldFactory类,它提供了一个静态方法...

    详解Spring中bean实例化的三种方式

    本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`&lt;bean&gt;`...

    Spring工厂方法创建(实例化)bean实例代码

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

    基于java的企业级应用开发:Bean的实例化.ppt

    首先,我们需要定义一个工厂类并提供一个返回Bean实例的方法,然后在Spring配置文件中,除了`class`属性指向工厂类,还需要额外定义一个`bean`来实例化工厂类,如`myBean3Factory`。获取Bean实例时,Spring容器会先...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    如果一个BeanA依赖于另一个BeanB,同时BeanB也依赖于BeanA,那么Spring在处理依赖关系时可能会陷入循环引用,导致两个Bean都实例化两次。 3. **@PostConstruct与初始化回调**:Spring允许我们在Bean初始化后执行...

    java bean实例

    3. **实例化Bean**:容器根据配置信息创建Bean实例。 4. **初始化**:容器可能会调用Bean的特定方法(如init方法)进行初始化操作。 联系信息提供了QQ号,这意味着如果在配置或使用过程中遇到问题,可以通过该联系...

    spring学习----工厂Bean

    当Spring容器遇到一个被标记为FactoryBean的Bean定义时,它不会直接实例化这个Bean,而是调用`getObject()`方法来获取实际需要的对象。 在实际应用中,工厂Bean有多种用途。例如: 1. **复杂初始化逻辑**:如果一...

    Bean开发实例之三实体Bean开发实例

    Home接口提供了创建、查找和删除实体Bean实例的方法。 4. **实体Bean示例**:假设有一个名为`Student`的数据表,包含`STUID`、`STUNAME`和`LOCKERID`三个字段。为了创建一个对应于该数据表的实体Bean,首先需要...

    Spring Bean实例化实现过程解析

    通过对 Spring Bean 实例化的了解,我们可以更好地使用 Spring 框架来开发企业级应用程序。 knowledge points: * Spring Bean 实例化是 Spring 框架中一个非常重要的概念。 *Spring 容器会自动调用 Bean 的无参...

    多线程实例化bean,创建多线程时可注入

    多线程实例化bean,创建多线程时可注入

    Spring Bean创建初始化流程.docx

    进入`DefaultListableBeanFactory`的`preInstantiateSingletons()`方法,这个方法遍历所有的Bean定义,对于单例模式的Bean,进行实例化。 5. **获取Bean实例**: 在预实例化过程中,`getBean(beanName)`被调用,...

    Spring Bean的初始化和销毁实例详解

    在Spring框架中,我们可以使用多种方式来初始化Bean,下面我们将介绍两种常见的方式: 1、使用@Bean的initMethod 在使用@Bean注解时,我们可以使用initMethod属性来指定Bean的初始化方法。例如: ```java @Bean...

Global site tag (gtag.js) - Google Analytics