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"是一个非常关键的概念,它扩展了传统的Bean定义,使得我们可以在Spring IoC容器中创建自定义的实例化逻辑。工厂Bean允许开发者在对象实例化时进行更复杂的控制,比如引入特定的初始化过程...
**构造方法实例化**是Spring中最常见的创建Bean的方式。它通过调用类的构造函数来创建Bean实例。以下是实现这一方式的步骤: 1. **创建类**:定义一个接口`BookDao`和一个实现该接口的类`BookDaoImpl`。接口中有一...
- **SpringBean开发**:了解如何在EOS平台上创建和配置SpringBean。 - **SpringBean调用**:掌握如何在其他组件中调用已定义好的SpringBean。 - **SpringBean调试**:学会使用EOS提供的调试工具来定位和解决问题...
通过以上这些注解,开发者可以更精细地控制Spring容器中bean的创建、初始化、销毁以及依赖关系。理解并熟练运用这些工具,能够提高代码的可维护性和灵活性。在实际项目中,合理利用这些特性,可以有效地减少配置文件...
Bean工厂是Spring的基石,它负责创建、管理和配置对象。 2. **数据访问/集成**:如JDBC、ORM(Object-Relational Mapping)和OXM(Object-XML Mapping)模块,提供了对数据库操作的支持,如Hibernate和MyBatis的...
这篇“Spring学习笔记(2)----实例化Bean的三种方式”着重讲解了如何在Spring应用上下文中初始化Bean。以下是这三种方式的详细说明: 1. **XML配置方式** 在早期的Spring版本中,XML配置是最常见的实例化Bean的...
2. **初始化**:当Spring IoC容器加载时,会根据配置文件中的信息创建Bean实例,并执行任何指定的初始化方法。 3. **使用**:开发者可以通过Spring容器获取Bean的实例并进行使用。 4. **销毁**:在某些情况下,...
核心容器包括Bean工厂(BeanFactory)和ApplicationContext,它们是Spring的核心,负责对象的创建、管理及依赖注入。 在`spring-framework-5.1.4.RELEASE-docs.zip`中,我们可以找到详细的API文档和用户指南,这些...
当设置为`singleton`时,Spring容器会在启动时创建bean的一个实例,并在后续请求时返回同一个实例。在上述代码中,`AppForScope`类的main方法验证了这一点,通过比较两次获取的bean对象的内存地址,发现它们是相同的...
总结,Spring框架提供了灵活的方式来创建Bean对象,可以根据具体需求选择合适的方法。无参构造方法适合简单场景,静态工厂和实例工厂则更适合复杂情况,如需进行特殊初始化或复用已有对象。理解并熟练掌握这些创建...
通过"javadoc-api"这个压缩包,开发者可以快速查找并了解Spring 3.0框架中的每个类和接口的详细信息,包括它们的用途、如何使用以及与其他组件的交互方式。这有助于编写出高效、整洁且易于维护的代码,提高开发效率...
在本项目中,Spring作为容器,管理着所有Bean的生命周期,通过XML配置文件或Java配置类来定义Bean的创建、初始化、销毁等过程。同时,Spring MVC作为其Web层组件,处理HTTP请求,实现业务逻辑和视图的解耦。 二、...
Beans模块提供了Bean工厂,它是Spring管理对象的中心,而Context模块扩展了Bean工厂,提供了一种上下文模型,可以加载其他容器和资源。 2. **Data Access/Integration**(数据访问/集成):该模块涵盖了JDBC、ORM、...
例如,Spring MVC的文档将解释如何创建web应用程序,而AOP(面向切面编程)部分则会介绍如何实现横切关注点,如日志记录和事务管理。 `libs`文件夹则包含了一系列的JAR文件,这些是Spring框架及其依赖库。Spring...
@Configuration和@Bean注解是核心,它们定义了bean的创建方式。此外,@Autowired注解用于自动装配依赖,极大地减少了手动管理对象实例的复杂性。 面向切面编程在Spring中是通过AOP模块实现的,它允许开发者定义“切...
在这个阶段,你将学习到BeanFactory如何解析XML配置,创建Bean实例,并执行初始化方法,理解Bean的生命周期管理。 “tiny-spring-step-3-inject-bean-with-property.zip”带你走进依赖注入的世界。这个步骤通过属性...
在源码中,我们可以看到BeanFactory和ApplicationContext是如何管理bean的创建和依赖关系的。例如,`DefaultListableBeanFactory`负责bean的实例化,`BeanDefinition`则存储了bean的相关配置信息。 2. **AOP**:...
Spring AOP提供了一种方便地实现切面编程的方式,允许我们在不修改原有代码的情况下,插入额外的功能,如日志、事务管理等。AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点...
1. **实例化**:Spring容器在遇到一个Bean定义时,会通过反射机制创建Bean实例。如果Bean定义中有`factory-method`属性,那么Spring会调用指定的方法来实例化Bean,而不是使用默认的构造器。 2. **属性注入**:实例...
Spring框架是Java开发中最广泛使用的轻量级框架之一,它提供了一种模块化的方式来构建企业级应用。"spring.jar"是Spring框架的核心库,包含了核心容器、AOP(面向切面编程)、上下文、表达式语言等模块。这个核心库...