By default, all beans in Spring are singletons. This means that Spring maintains a single instance of the bean, all dependent objects use the same instance, and all calls to BeanFactory.getBean() return the same instance
有三种方式可以改变bean生成的不是单例的,在bean 的节点属性scope指定,默认值是:"singleton".可以以三种任意的值:"prototype","request","session"代替.
prototype含义是:在每次调用BeanFactory.getBean()方法返回的是一个新的对象
request含义是:在每一次http请求调用BeanFactory.getBean()方法返回一个新的对象,如果是同一个http请求,返回的是同一个对象,
session含义是:正像request一样,只是范围不同,一个是请求,一个是会话,因此,在同一个http session中获得的bean是同一个实例.
示例:
配置spring-bean.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="singleMe" class="java.lang.String" scope="singleton">
<constructor-arg type="java.lang.String" value="Singleton"/>
</bean>
<bean id="prototypeMe" class="java.lang.String" scope="prototype">
<constructor-arg type="java.lang.String" value="Prototype"/>
</bean>
</beans>
代码测试:
public class ScopeDemo {
private static void compare(final BeanFactory factory, final String beanName) {
String b1 = (String)factory.getBean(beanName);
String b2 = (String)factory.getBean(beanName);
System.out.println("Bean b1=" + b1 + ", b2=" + b2);
System.out.println("Same? " + (b1 == b2));
System.out.println("Equal? " + (b1.equals(b2)));
}
public static void main(String[] args) {
BeanFactory factory = new XmlBeanFactory(
new ClassPathResource(
"/META-INF/spring/srping-bean.xml"));
compare(factory, "singleMe");
compare(factory, "prototypeMe");
}
}
输出结果是:
Bean b1=Singleton
Same? true
Equal? true
Bean b1=Prototype
Same? false
Equal? true
分享到:
相关推荐
其中,Spring Bean生命周期的管理是Spring框架的核心功能之一,它涉及Spring容器如何创建、配置以及销毁Bean的整个过程。理解Spring Bean的生命周期对于开发高效和可维护的Java应用至关重要。 Spring Bean生命周期...
1. Instantiation(实例化):创建 Bean 实例 2. Populate properties(设置属性):设置 Bean 的属性 3. Dependency injection(依赖注入):注入依赖的 Bean 4. Initialization(初始化):执行初始化方法 5. Use...
- **Bean实例化(Bean Instantiation)**:根据Bean定义创建Bean实例,可以使用反射API完成。 - **生命周期管理(Lifecycle Management)**:处理Bean的初始化、销毁方法调用。 **4. 创建Bean定义** 在模拟过程中,...
在"Spring-ICO练习源码"中,我们可以推测这是一组关于Spring框架实践的代码示例,ICO可能代表“实例化、配置和操作”(Instantiation, Configuration, and Operation),或者是特定的练习主题缩写。配合提供的博客链接...
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Instantiation of bean failed; nested exception is org....
5. **Spring MVC**:Spring MVC是用于构建Web应用的模块,提供模型-视图-控制器(Model-View-Controller,MVC)架构。它支持RESTful API设计,可以方便地与视图技术如JSP、Thymeleaf等集成,以及处理HTTP请求和响应...
1. **早绑定(Eager Instantiation)**: 当Spring容器检测到潜在的循环依赖时,它会尝试提前创建bean的实例,但不执行属性注入。 2. **对象工厂(Object Factory)**: 在每个bean实例化时,Spring会为每个依赖创建一...
- 在Spring中,可以通过`@Component`注解将切面声明为一个Spring Bean,然后通过`@Autowired`或XML配置来装配到其他Bean中。 9. **AOP应用场景** - 事务管理:使用AOP可以在方法调用前后自动处理事务。 - 日志...
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: ...
Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................
Instantiation.py
Error creating bean with name 'myRealm' defined in ServletContext resource [/WEB-INF/spring/tbm_web_shiro.xml]: Instantiation of bean failed; nested exception is org.springframework.beans....
Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................
This process is fundamentally the inverse, hence the name Inversion of Control (IoC), of the bean itself controlling the instantiation or location of its dependencies by using direct construction of ...
9. **Bean的实例化与依赖注入(Bean Instantiation and Dependency Injection)** Spring Boot通过`@Component`、`@Service`、`@Repository`和`@Controller`等注解识别并管理bean。Spring的依赖注入机制保证了bean...
Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/...
- **Instantiation of Complex Type Definition Nodes**: 复杂类型节点的实例化。 ##### 4.6 Event Model **Event Model**描述了如何处理事件,包括事件的分类、类型定义等。 - **Overview**: 事件模型的概览。 -...
如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside TheC++ Object Model正适合你。 目录: 本立道生(侯捷 译序) 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象...
在这个“wvent_instantiation_assignment.rar”压缩包中,我们重点关注的是一些与实现GSM短信功能相关的辅助函数。这些函数通常是为了简化处理短信服务的流程而设计的,它们可以方便地集成到Android应用中,以实现...
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed;...