`
run_wang
  • 浏览: 168410 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

配置Spring管理的bean的作用域

阅读更多
<bean id="persionService" class="com.xinyang.services.impl.PersionServiceBean"></bean>
把业务bean交给Spring管理,在客户端只要调用getBean()方法,就可以从容器里获取bean实例
通过getBean()方法产生同一个业务Bean的两个实例,我们通过两个变量引用是否相同用来判断它从Spring容器里面获取的bean是否为一个
PersionService  persionService1=(PersionService)ctx.getBean("persionService");
PersionService  persionService2=(PersionService)ctx.getBean("persionService");
System.out.println(persionService1==persionService2)

从控制的打印消息中可以看到两个变量所索引用的对象是同一个,或者说 在默认情况下业务Bean交给Spring容器管理之后这个Bean是单实例,
若希望每调用getBean()方法都获取新的实例,可以通过prototype(原型)这个属性来指定。这里牵扯到Bean的作用域,而单例模式指定的作用域就是singleton作用域范围,也就是若没有指定作用域默认的就是singleton作用域
<bean id="persionService" class="com.xinyang.services.impl.PersionServiceBean" scope="prototype"></bean>


.singleton 在每个Spring Ioc容器中一个bean定义只有一个对象实例,默认情况下会在容器启动时或实例容器时初始化bean但可以指定Bean节点的lazy-init="true" 来延迟初始化bean,这时候,只有第一次获取bean才会初始化如:
<bean id="xxx" class="com.xinyang.services.impl.Service.XinyangServicesBean" lazy-init="true"/>如果想对所有的bean都应用延迟初始化,可以在根节点beans设置default-lazy-init="true"/>
若没有配置 lazy-init="default"
注: lazy-init="true"尽可能的不要使用,因为希望在应用启动的时候观察控制台打印的信息对于业务bean完成化,若配置此属性也就只能在运行期发现这个错误,除非完成特殊操作否则尽量少用

.prototype
每次从容器获取bean都是新的对象
.request
.session
.global session



其他
若在业务bean中定义一个初始化方法init() 如:打开数据库连接或打开某些资源 需要Spring容器对这个bean初始化时就需要执行此方法这是通过容器反射技术来进行调用。配置如下:
<bean id="persionService" class="com.xinyang.services.impl.PersionServiceBean" scope="singleton" lazy-init="default" init-method="init" ></bean>


若在业务bean中定义一个销毁方法detory() 如:关闭数据库连接或关闭某些资源 需要Spring容器对这个bean销毁之前先执行销毁方法
配置如下:



注:bean在spring容器中若没有进行人为操作或人为删除它默认的情况下 它一直在spring中,所以只有在Spring容器关闭,而bean才被销毁


这是需要一个AbstractApplicationContext抽象类,而它也被ClassPathXmlApplicationContext所继承,所以我们通过AbstractApplicationContext这个抽象类 来引用bean的实例
AbstractApplicationContext ctx=new ClassPathXmlApplicationContext("spring.xml");
//来正常关闭Spring容器
ctx.close();
分享到:
评论

相关推荐

    spring的bean作用域

    在Spring中,有五种主要的Bean作用域: 1. **Singleton作用域**: - Singleton是Spring默认的Bean作用域。这意味着,无论何时,只要Spring容器被初始化,它都会创建一个Bean实例,并将其缓存起来。后续对相同ID的...

    Spring 的bean的作用域总结

    Spring 的bean的作用域总结,详细的总结了 Spring 的bean的作用域

    详解Spring中bean的作用域

    对于 prototype 作用域的 bean,有一点非常重要,那就是 Spring 不能对一个 prototype bean 的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个 prototype 实例后,将它交给客户端,随后就对该 ...

    spring bean 的作用域(scope)

    spring bean 的作用域(scope), SPringle bean的作用域

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

    Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了Bean的生命周期和作用域的管理方式。 一、Bean的生命周期 Bean的生命周期是指Bean从创建到销毁的整个过程。这个过程可以分为九个阶段: 1. ...

    spring Bean的作用域之间有什么区别1

    Spring Bean 的作用域之间有什么区别:Bean的作用域: 可以通过scope 属性来指定bean的作用域 ①singleton: 默认值。当IOC容器

    Spring Bean 作用域.pdf

    spring Bean 作用域.pdf

    Spring中Bean的作用域

    NULL 博文链接:https://huangminwen.iteye.com/blog/1486717

    Spring Bean的作用域.docx

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

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

    在Spring框架中,`Spring-Aware`接口是一个重要的概念,它允许我们与Spring的应用上下文(ApplicationContext...通过正确地配置和使用`Spring-Aware`接口以及理解Bean的作用域,可以有效地在这些模块间共享和协同工作。

    JSP 中Spring Bean 的作用域详解

    JSP 中Spring Bean 的作用域详解 Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1&gt;singleton: 单例模式,在整个spring IOC容器中,单例模式作用域的Bean都将只生成一个实例。一般Spring...

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

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

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

    在Spring框架中,Bean的作用域是决定如何管理和创建Bean实例的关键概念。本篇文章将深入探讨两种主要的作用域:singleton和prototype,并通过实例分析其用法和注意事项。 首先,`singleton`是Spring默认的作用域,...

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

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

    01.Spring Bean的作用域代码.zip

    01.Spring Bean的作用域代码

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

    Spring容器可以管理singleton作用域下Bean的生命周期,在此作用域下,Spring能够精确地知道Bean何时被创建,何时初始化完成,以及何时被销毁。 对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean的...

    spring管理bean应用实例代码

    在Spring框架中,Bean管理是核心功能之一,它允许开发者通过声明式的方式配置和管理对象。这个压缩包文件“spring管理bean应用实例代码”显然包含了关于如何在Spring中配置和使用Bean的示例代码。接下来,我们将深入...

    Spring实战之Bean的作用域request用法分析

    主要介绍了Spring实战之Bean的作用域request用法,结合实例形式分析了spring中Bean的request作用域相关使用技巧与操作注意事项,需要的朋友可以参考下

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

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

Global site tag (gtag.js) - Google Analytics