以前很不明白Bean的scope属性的含义,今天做了一个实验,终于差不多搞明白了。贴出来与大家共享。
例子很简单,Bean的功能为取当前时间,其代码为:
Common.java:
--------------------
package XX;
import java.util.Date;
import java.text.*;
public class Common
{
Date d=new Date();
public String now(String s)
{
SimpleDateFormat formatter = new SimpleDateFormat(s);
return formatter.format(d);
}
}
测试页面的代码为:
date.jsp
-----------------------------------------------------------
<jsp:useBean id="cm" scope="XX" class="XX.Common"/>
<%=cm.now("yyyy-MM-dd HH:mm:ss")%>
测试结果:
1、当scope=application时,我们浏览date.jsp,这时显示出了系统时间。可是不管我们怎么刷新,重新打开一次浏览器,甚至换台机器,它显示的时间始终不变,都是当初的时间(即bean刚创建时得到的系统时间),因为scope=application,所以Bean的实例在内存中只有一份,此时只要不重新启动WEB服务,输出不会变化。
2、当scope=session时,浏览date.jsp,刷新时显示也不会变化。可是当我们重新打开一浏览器,即一个新的session,系统便再次创建Bean的实例,取得当前系统时间,这时将得到正确的时间。同样,再次刷新新打开的页面(新的session),显示也不会变化。
3、当scope=page/request(它们的区别只在于包含静态文件时,此处无区别)时,不断刷新页面将不断得到当前系统时间。
以上可以看出不同的scope,Bean有不同的作用域。使用时一定注意,不要将得到经常变动的Bean的scope设为application或session,那将得到不正确的结果.
分享到:
相关推荐
spring bean 的作用域(scope), SPringle bean的作用域
- 在portlet环境中,Global Session作用域的Bean在全局portlet会话期间有效,这意味着所有的portlet都可以访问同一个实例。然而,在标准的HTTP会话中,此作用域并不常见。 - 示例配置:`<bean id="role" class=...
Singleton 作用域和 GOF 设计模式中的单例是完全不同的,单例设计模式表示一个 ClassLoader 中只有一个 class 存在,而这里的 singleton 则表示一个容器对应一个 bean,也就是说当一个 bean 被标识为 singleton ...
Spring Bean 的作用域之间有什么区别:Bean的作用域: 可以通过scope 属性来指定bean的作用域 ①singleton: 默认值。当IOC容器
Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了Bean的生命周期和作用域的管理方式。 一、...
在Spring框架中,Bean的作用域(Scope)是一个关键概念,它决定了如何管理和实例化Bean。Spring提供了五种不同的Bean作用域,每种都有其特定的使用场景和行为。 1. **Singleton作用域**:这是Spring的默认作用域,...
Spring 的bean的作用域总结,详细的总结了 Spring 的bean的作用域
Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1>singleton: 单例模式,在整个spring IOC容器中,单例模式作用域的Bean都将只生成一个实例。一般Spring容器默认Bean的作用域为singleton ...
2. **原型(Prototype)**:与单例相反,`scope="prototype"`表示每次请求都会创建一个新的Bean实例。这种方式适用于有状态的Bean,比如用户会话中的模型对象。 3. **请求(Request)**:在Web应用中,如果设置`...
2. **原型(Prototype)作用域**:与单例相反,原型作用域的Bean每次请求都会创建一个新的实例。这适用于需要多个实例的情况,如用户会话中的对象,每个用户可能需要一个独立的对象实例。 3. **请求(Request)作用...
例如,配置一个Singleton作用域的Bean可以在XML配置文件中这样写: ```xml <bean id="scope" class="com.itheima.scope.Scope" scope="singleton"/> ``` 在这个例子中,`com.itheima.scope.Scope`类的实例将被...
spring Bean 作用域.pdf
`ApplicationContextAware`是其中的一个典型接口,当我们想要在非托管类(即非Spring Bean)中获取Spring容器中的其他Bean时,可以使用这个接口。 `ApplicationContextAware`接口提供了`setApplicationContext`方法...
在Spring框架中,Bean的作用域是决定如何管理和创建Bean实例的关键概念。本篇文章将深入探讨两种主要的作用域:singleton和...理解并正确使用这两个作用域,能够帮助开发者更有效地设计和管理Spring应用中的Bean。
**Prototype**作用域下的Bean在每次请求时都会创建一个新的实例。这意味着,对于每个`getBean()`方法的调用,Spring都会创建一个新的Bean实例。这种作用域适用于那些需要频繁创建或销毁的对象。 **配置示例**: ``...
singleton作用域表示一个容器对应一个Bean,所有对Bean的请求都会返回同一个实例,而prototype作用域每次请求Bean实例时都会创建一个新的Bean实例。选择哪种作用域取决于具体的应用场景和需求。
1. **单例(Singleton)**:这是默认的作用域,Spring容器只会创建一个Bean实例,所有对Bean的请求都会返回同一个实例。 2. **原型(Prototype)**:在每次请求时,Spring容器都会创建一个新的Bean实例。 3. **...
singleton 作用域与 GOF 设计模式中的单例模式不同,singleton 作用域表示一个容器对应一个 bean,而不是一个 ClassLoader 中只有一个 class 存在。 配置实例: ```xml <bean id="role" class="spring.chapter2....
例如,可以创建一个名为`MyAnnotation`的注解,并在其中定义属性。 - **应用注解**:将自定义注解应用于Bean的属性上,如`@MyAnnotation(value="someValue") private String propertyName;` - **注解处理**: - *...