`
zhongjingquan
  • 浏览: 7207 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring Bean Instantiation Modes

    博客分类:
  • java
阅读更多

    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

 

0
0
分享到:
评论

相关推荐

    Spring Bean生命周期.pdf

    其中,Spring Bean生命周期的管理是Spring框架的核心功能之一,它涉及Spring容器如何创建、配置以及销毁Bean的整个过程。理解Spring Bean的生命周期对于开发高效和可维护的Java应用至关重要。 Spring Bean生命周期...

    谈谈我对Spring Bean 生命周期的理解

    1. Instantiation(实例化):创建 Bean 实例 2. Populate properties(设置属性):设置 Bean 的属性 3. Dependency injection(依赖注入):注入依赖的 Bean 4. Initialization(初始化):执行初始化方法 5. Use...

    模拟Spring的IOC

    - **Bean实例化(Bean Instantiation)**:根据Bean定义创建Bean实例,可以使用反射API完成。 - **生命周期管理(Lifecycle Management)**:处理Bean的初始化、销毁方法调用。 **4. 创建Bean定义** 在模拟过程中,...

    Spring-ICO练习源码

    在"Spring-ICO练习源码"中,我们可以推测这是一组关于Spring框架实践的代码示例,ICO可能代表“实例化、配置和操作”(Instantiation, Configuration, and Operation),或者是特定的练习主题缩写。配合提供的博客链接...

    springAOP demo 带错误解决文档

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Instantiation of bean failed; nested exception is org....

    spring开发文档

    5. **Spring MVC**:Spring MVC是用于构建Web应用的模块,提供模型-视图-控制器(Model-View-Controller,MVC)架构。它支持RESTful API设计,可以方便地与视图技术如JSP、Thymeleaf等集成,以及处理HTTP请求和响应...

    Spring循环依赖案例问题详解.docx

    1. **早绑定(Eager Instantiation)**: 当Spring容器检测到潜在的循环依赖时,它会尝试提前创建bean的实例,但不执行属性注入。 2. **对象工厂(Object Factory)**: 在每个bean实例化时,Spring会为每个依赖创建一...

    spring_aop4.rar_aop4.com

    - 在Spring中,可以通过`@Component`注解将切面声明为一个Spring Bean,然后通过`@Autowired`或XML配置来装配到其他Bean中。 9. **AOP应用场景** - 事务管理:使用AOP可以在方法调用前后自动处理事务。 - 日志...

    基于springboot+mybatis实现的外卖订餐系统源码+项目说明(毕设).zip

    Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: ...

    spring-framework-reference-4.1.2

    Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................

    Instantiation.py

    Instantiation.py

    Maven解决jar冲突调试步骤

    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....

    spring-framework-reference4.1.4

    Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................

    apache-tomcat-9.0.17.rar

    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...

    SSH整合项目中容易出现的错误

    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/...

    OPC UA Part 3 - Address Space Model 1.00 Specification

    - **Instantiation of Complex Type Definition Nodes**: 复杂类型节点的实例化。 ##### 4.6 Event Model **Event Model**描述了如何处理事件,包括事件的分类、类型定义等。 - **Overview**: 事件模型的概览。 -...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside TheC++ Object Model正适合你。 目录: 本立道生(侯捷 译序) 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象...

    wvent_instantiation_assignment.rar_android开发_assignment

    在这个“wvent_instantiation_assignment.rar”压缩包中,我们重点关注的是一些与实现GSM短信功能相关的辅助函数。这些函数通常是为了简化处理短信服务的流程而设计的,它们可以方便地集成到Android应用中,以实现...

    S2SH整合报错

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed;...

Global site tag (gtag.js) - Google Analytics