`

spring2 bean作用域 和 生命周期

 
阅读更多
一 作用域
1. singleton
spring中bean的默认作用域, 每一个bean定义只有一个实例对象。默认情况下IOC容器启动时就会实例化该bean。 但我们可以指定lazy-init=“true”来延迟初始化,这时候只有第一获取该bean是才会被初始化,如:
<bean id="account" class="com.example.po.Account" lazy-init="true"/>

如果要对所有bean都延迟初始化,可以在beans上加属性,如:
<beans default-lazy-init="false" ...>



2.prototype
每次从容器中获取都是新的实例。IOC容器启动时不会被实例化,第一次获取该bean时才实例化
<bean id="account" class="com.example.po.Account"  scope="prototype"/>


3.web作用域-request


4.web作用域-session


5.web作用域-global session


二 生命周期
1. singleton bean在容器启动时被创建,容器关闭时被销毁
public class Account {
	public void init(){
		System.out.println("----initing");
	}
	public void sayHello(){
		System.out.println("----hello");
	}
	public void destroy(){
		System.out.println("----destroying");
	}
}


<bean id="account" class="com.example.po.Account"  
 init-method="init"  destroy-method="destroy"/>


@Test
public void test1(){
	AbstractApplicationContext context = new ClassPathXmlApplicationContext("mybean.xml");
	Account account = (Account)context.getBean("account");
	account.sayHello();
	context.close();
}

输出结果:
----initing
----hello
----destroying

2. prototype bean在第一次被获取时才实例化
例如将上例改为prototype
<bean id="account" class="com.example.po.Account"  scope="prototype"
 init-method="init"  destroy-method="destroy"/>	

输出结果:
----initing
----hello
分享到:
评论

相关推荐

    详解Spring中Bean的生命周期和作用域及实现方式

    Spring中Bean的生命周期和作用域及实现方式 Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了...

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析 Spring Framework 是一个流行的 Java Web 应用程序框架,它提供了一个强大的依赖注入机制,称为 Bean 容器。Bean 容器管理着应用程序中的所有对象,并提供了一些...

    spring的bean作用域

    Spring容器仅负责初始化和配置这些实例,但不会管理它们的生命周期。客户端(如其他Bean或代码)需要负责销毁这些实例。 - 配置Prototype Bean的例子是:`&lt;bean id="role" class="spring.chapter2.maryGame.Role" ...

    浅谈Spring中Bean的作用域、生命周期

    Spring中Bean的作用域和生命周期 Spring框架中,Bean的作用域和生命周期是两个非常重要的概念,了解这两个概念对深入理解Spring框架的工作机理具有非常重要的意义。本文将对Spring中Bean的作用域和生命周期进行详细...

    spring bean的生命周期

    2. **容器管理的生命周期回调** - **Singleton Beans的懒加载**:如果Bean的scope为singleton,并且在XML配置中没有设置`lazy-init="true"`,那么Spring容器在启动时就会实例化这些Bean。 - **Prototype Beans的...

    深入了解Spring中Bean的作用域和生命周期

    深入了解Spring中Bean的作用域和生命周期 在 Spring 框架中,Bean 的作用域和生命周期是两个非常重要的概念,它们决定了 Bean 的实例化和生命周期。了解 Spring 中 Bean 的作用域和生命周期是非常重要的,这将有助...

    Spring框架中Bean的生命周期 Spring中Bean有几种作用域

    在Spring框架中,Bean的生命周期管理和作用域是其核心特性之一,它们对于理解Spring如何管理对象的创建、初始化、使用以及销毁至关重要。首先,我们来深入探讨Bean的生命周期。 Spring中的Bean生命周期主要分为两个...

    详解Spring中bean的作用域

    Spring 中 bean 的作用域是指 Spring IoC 容器中 bean 的生命周期和实例化方式。bean 的作用域决定了 bean 的实例化和生命周期的管理方式。在 Spring 中,bean 的作用域可以分为五种:singleton、prototype、...

    Spring bean生命周期demo

    不同作用域的Bean,其生命周期和管理方式也不同。例如,单例Bean在整个应用中只有一个实例,而原型Bean每次请求都会创建新的实例。 6. **AOP代理** 如果Bean被声明为需要AOP代理(例如,带有切面注解),Spring会...

    Spring的bean生命周期

    Bean生命周期的理解对于优化应用性能和理解Spring内部工作原理至关重要。这里我们将深入探讨Spring的Bean生命周期、容器周期以及工厂周期。 首先,让我们从Bean生命周期开始。在Spring中,Bean的生命周期包括以下几...

    Spring Bean的作用域.docx

    Spring提供了五种不同的Bean作用域,每种都有其特定的使用场景和行为。 1. **Singleton作用域**:这是Spring的默认作用域,意味着无论何时从容器中请求一个特定的Bean,都会返回同一个实例。在配置文件中,可以使用...

    spring-aware接口实现与bean作用域(spring多容器层面)

    这些作用域定义了Bean的生命周期和创建行为: 1. **单例(Singleton)**:默认作用域,每个容器中只有一个实例,适合无状态的服务。 2. **原型(Prototype)**:每次请求都会创建一个新的Bean实例,适用于有状态的...

    Spring实战之Bean的作用域singleton和prototype用法分析

    总结起来,Spring中的`singleton`和`prototype`作用域是管理Bean生命周期的重要手段。`singleton`提供了单例模式的实现,确保了全局唯一性,适合状态不随时间改变的对象;`prototype`则支持按需创建新实例,适用于...

    Spring Bean 的生命周期

    - **作用域的影响**:不同作用域(如singleton、prototype、request、session等)的Bean,其生命周期和创建方式都有所不同,需要根据应用场景选择合适的作用域。 - **懒加载**:如果Bean配置为`lazy-init="true"`,...

    Spring Bean生命周期&BeanDefinitions1

    6. **作用域处理**:Bean的作用域会影响其生命周期。默认情况下,Bean的scope为"singleton",表示Spring容器只创建一个实例,并将其缓存。如果scope设为"prototype",每次请求都会创建一个新的Bean实例。 7. **销毁...

    Spring容器中Bean的作用域编程开发技术共3页.pd

    在Spring框架中,Bean的作用域是其生命周期管理的关键部分,它决定了Bean的创建、共享以及销毁方式。本篇内容将深入探讨Spring容器中Bean的作用域编程开发技术,以帮助开发者更好地理解和利用这些特性来优化应用的...

    spring bean life cycle

    在Spring框架中,Bean生命周期是核心概念之一,它涉及到Bean的创建、初始化、使用和销毁等阶段。了解和掌握Bean生命周期对于开发高质量的Spring应用至关重要。以下是对Spring Bean生命周期的详细解析。 首先,Bean...

    Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等).doc

    本文主要研究 Spring 框架中 Bean 的实例化过程,包括 Bean 的生命周期和循环依赖问题的解决方案。在 Spring 框架中,Bean 的实例化是通过 BeanFactory 中的 getBean 方法来实现的,该方法根据 bean 的名字、Class ...

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

    综上所述,Spring Bean重复执行两次的问题通常是由于配置错误、依赖注入循环、初始化回调的不当使用、静态工厂方法的误用、AOP代理的配置问题或是Bean作用域设置不准确导致的。通过仔细检查和修正这些问题,可以避免...

Global site tag (gtag.js) - Google Analytics