`

Spring学习-创建Bean的三种方式

阅读更多
MyTestInstance类
package com.app.impl;

public class MyTestInstance {
	
	private String testMessage;
	
	public MyTestInstance(){
		System.out.println("初始化我的MyTestInstance类.");
	}
	public void info(){
		System.out.println(this.getTestMessage());
	}

	public String getTestMessage() {
		return testMessage;
	}

	public void setTestMessage(String testMessage) {
		this.testMessage = testMessage;
	}

	
}




TestCreateInstance 类
package com.app.impl;

import com.app.ICreateInstance;

public class TestCreateInstance implements ICreateInstance {
	
	private String message;
	
	public TestCreateInstance(){
		System.out.println("使用构造器创建Bean实例");
	}
	public static MyTestInstance staticCreateInstance(){
		MyTestInstance instance = new MyTestInstance();
		System.out.println("使用静态工厂方法创建Bean");
		return instance;
	}
	public MyTestInstance createInstance(){
		MyTestInstance instance = new MyTestInstance();
		System.out.println("调用实例工厂方法创建Bean");
		return instance;
	}

	public void testService() {
		System.out.println("testService--------------");
	}

	public void setMessage(String message) {
		this.message = message;
	}
	public String getMessage() {
		return message;
	}
	
	
	

}




Hibernate.cfg.xml配置
<bean id="testCreateInstance1" class="com.app.impl.TestCreateInstance" p:message="我的哈哈">
	</bean>	
	<bean id="testCreateInstance2" class="com.app.impl.TestCreateInstance" 
		p:testMessage="不是哈哈1"
		factory-method="staticCreateInstance">
	</bean>
	<bean id="testCreateInstance3" factory-bean="testCreateInstance1"
		p:testMessage="不是哈哈2"
		factory-method="createInstance">
	</bean>


测试
public void testCreate(){
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		TestCreateInstance instance1 = ctx.getBean("testCreateInstance1",TestCreateInstance.class);
		instance1.testService();
		
		MyTestInstance instance2 = ctx.getBean("testCreateInstance2",MyTestInstance.class);
		instance2.info();
		
		MyTestInstance instance3 = ctx.getBean("testCreateInstance3",MyTestInstance.class);
		instance3.info();
	}


输出:
---------------------------------------------------
使用构造器创建Bean实例
初始化我的MyTestInstance类.
使用静态工厂方法创建Bean
初始化我的MyTestInstance类.
调用实例工厂方法创建Bean
testService--------------
不是哈哈1
不是哈哈2
分享到:
评论

相关推荐

    spring学习----工厂Bean

    在Spring框架中,"工厂Bean"是一个非常关键的概念,它扩展了传统的Bean定义,使得我们可以在Spring IoC容器中创建自定义的实例化逻辑。工厂Bean允许开发者在对象实例化时进行更复杂的控制,比如引入特定的初始化过程...

    Java开发学习(四)----bean的三种实例化方式.doc

    **构造方法实例化**是Spring中最常见的创建Bean的方式。它通过调用类的构造函数来创建Bean实例。以下是实现这一方式的步骤: 1. **创建类**:定义一个接口`BookDao`和一个实现该接口的类`BookDaoImpl`。接口中有一...

    普元eos-springbean开发

    - **SpringBean开发**:了解如何在EOS平台上创建和配置SpringBean。 - **SpringBean调用**:掌握如何在其他组件中调用已定义好的SpringBean。 - **SpringBean调试**:学会使用EOS提供的调试工具来定位和解决问题...

    spring注解开发--Bean加载控制.zip

    通过以上这些注解,开发者可以更精细地控制Spring容器中bean的创建、初始化、销毁以及依赖关系。理解并熟练运用这些工具,能够提高代码的可维护性和灵活性。在实际项目中,合理利用这些特性,可以有效地减少配置文件...

    spring-framework-master

    Bean工厂是Spring的基石,它负责创建、管理和配置对象。 2. **数据访问/集成**:如JDBC、ORM(Object-Relational Mapping)和OXM(Object-XML Mapping)模块,提供了对数据库操作的支持,如Hibernate和MyBatis的...

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

    这篇“Spring学习笔记(2)----实例化Bean的三种方式”着重讲解了如何在Spring应用上下文中初始化Bean。以下是这三种方式的详细说明: 1. **XML配置方式** 在早期的Spring版本中,XML配置是最常见的实例化Bean的...

    spring入门学习-3、Bean装配(XML).pdf

    2. **初始化**:当Spring IoC容器加载时,会根据配置文件中的信息创建Bean实例,并执行任何指定的初始化方法。 3. **使用**:开发者可以通过Spring容器获取Bean的实例并进行使用。 4. **销毁**:在某些情况下,...

    官方原版源码spring-framework-5.1.4.RELEASE.zip

    核心容器包括Bean工厂(BeanFactory)和ApplicationContext,它们是Spring的核心,负责对象的创建、管理及依赖注入。 在`spring-framework-5.1.4.RELEASE-docs.zip`中,我们可以找到详细的API文档和用户指南,这些...

    Java开发学习(三)----Bean基础配置及其作用范围.doc

    当设置为`singleton`时,Spring容器会在启动时创建bean的一个实例,并在后续请求时返回同一个实例。在上述代码中,`AppForScope`类的main方法验证了这一点,通过比较两次获取的bean对象的内存地址,发现它们是相同的...

    Spring创建bean对象三种方式代码实例

    总结,Spring框架提供了灵活的方式来创建Bean对象,可以根据具体需求选择合适的方法。无参构造方法适合简单场景,静态工厂和实例工厂则更适合复杂情况,如需进行特殊初始化或复用已有对象。理解并熟练掌握这些创建...

    Spring javadoc-api.rar

    通过"javadoc-api"这个压缩包,开发者可以快速查找并了解Spring 3.0框架中的每个类和接口的详细信息,包括它们的用途、如何使用以及与其他组件的交互方式。这有助于编写出高效、整洁且易于维护的代码,提高开发效率...

    spring-mybatis-spring-1.3.2.tar.gz

    在本项目中,Spring作为容器,管理着所有Bean的生命周期,通过XML配置文件或Java配置类来定义Bean的创建、初始化、销毁等过程。同时,Spring MVC作为其Web层组件,处理HTTP请求,实现业务逻辑和视图的解耦。 二、...

    官方原版源码 spring-5.2.8.RELEASE.zip

    Beans模块提供了Bean工厂,它是Spring管理对象的中心,而Context模块扩展了Bean工厂,提供了一种上下文模型,可以加载其他容器和资源。 2. **Data Access/Integration**(数据访问/集成):该模块涵盖了JDBC、ORM、...

    spring-framework-4.2.4.RELEASE.7z

    例如,Spring MVC的文档将解释如何创建web应用程序,而AOP(面向切面编程)部分则会介绍如何实现横切关注点,如日志记录和事务管理。 `libs`文件夹则包含了一系列的JAR文件,这些是Spring框架及其依赖库。Spring...

    spring-framework-4.2.0.RELEASE官方完整包加官方文档

    @Configuration和@Bean注解是核心,它们定义了bean的创建方式。此外,@Autowired注解用于自动装配依赖,极大地减少了手动管理对象实例的复杂性。 面向切面编程在Spring中是通过AOP模块实现的,它允许开发者定义“切...

    简单Spring框架模拟器--Demo

    在这个阶段,你将学习到BeanFactory如何解析XML配置,创建Bean实例,并执行初始化方法,理解Bean的生命周期管理。 “tiny-spring-step-3-inject-bean-with-property.zip”带你走进依赖注入的世界。这个步骤通过属性...

    spring-framework-4.3.0.RELEASE(源码已经成功编译)

    在源码中,我们可以看到BeanFactory和ApplicationContext是如何管理bean的创建和依赖关系的。例如,`DefaultListableBeanFactory`负责bean的实例化,`BeanDefinition`则存储了bean的相关配置信息。 2. **AOP**:...

    spring-framework-5.2.0.RELEASE-master.zip

    Spring AOP提供了一种方便地实现切面编程的方式,允许我们在不修改原有代码的情况下,插入额外的功能,如日志、事务管理等。AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点...

    spring bean life cycle

    1. **实例化**:Spring容器在遇到一个Bean定义时,会通过反射机制创建Bean实例。如果Bean定义中有`factory-method`属性,那么Spring会调用指定的方法来实例化Bean,而不是使用默认的构造器。 2. **属性注入**:实例...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    Spring框架是Java开发中最广泛使用的轻量级框架之一,它提供了一种模块化的方式来构建企业级应用。"spring.jar"是Spring框架的核心库,包含了核心容器、AOP(面向切面编程)、上下文、表达式语言等模块。这个核心库...

Global site tag (gtag.js) - Google Analytics