注:原创作品,转载请注明出处
Spring提供五种选择让用户决定bean的作用范围:
1,Singleton:单例模式,在整个Spring ioc中。使用singleton定义的bean将只有一个实例。
例如:
<bean id="userDao" class="com.supan.dao.imp.UserDaoImp" scope="singleton">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
测试java代码:
public void testSpringScope()
{
UserDao ud1 = (UserDao)ctx.getBean("userDao");
UserDao ud2 = (UserDao)ctx.getBean("userDao");
System.out.println(ud1 == ud2);
}
输出:true
2,prototype 原型模式:每次通过spring容器的getBean都将产生一个新的实例
例如:
spring配置文件:
<bean id="userDao" class="com.supan.dao.imp.UserDaoImp" scope="prototype">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
java测试代码:
/**
* <测试spring配置bean的属性scopt的作用>
*/
public void testSpringScope()
{
UserDao ud1 = (UserDao)ctx.getBean("userDao");
UserDao ud2 = (UserDao)ctx.getBean("userDao");
System.out.println(ud1 == ud2);
}
输出:false
3,request:对于每次http请求,使用request定义的bean都将产生一个新的实例。注:只有在web容器使用spring时,这个作用域才生效。
<bean id="LoginAction" class="com.supan.LoginAction" scope="request">
4,session:对于每次http session请求,使用session定义的bean都将产生一个新的实例。。注:只有在web应用中使用spring,此作用域才能生效。
由于本机上没有j2ee环境,没有实例展出。
5,global session:每个全局的Http session对应一个bean实例,典型情况下,仅在使用portletcontext的时候才有效。注:只有在web应用中使用spring,此作用域才能生效。
由于本机上没有j2ee环境,没有实例展出。
最后写一点:使用经验:
1, Sington是单例模式,由ioc容器管理,不是线程安全的。
若类是无状态的,那么sington性能要高一点,因为只有一个实例。
若类是有状态的,那么必须把scope设置成prototype。
2, 在ssh2项目中struts的action是有状态的,必须显示设置成scope="prototype",prototype是原型模式,每次action请求过来都会创建一个新的action。
而对于dao的实现类,推介使用scope = "sington" 因为这些类没有状态,
3,比较常用的是singleton,和prototype两种作用域。
4,spring默认的作用域是singleton(这样最省系统资源),如非必要,请不要随便用prototype作用域(比较消耗系统资源)
5,在使用request,session,global session需要在spring中额外的配置。
第一种配置方法(Servlet2.4以后):
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
第一种配置方法(Servlet2.4以前):
<filter>
<filter-name>requestContextFilter></filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
spring bean 的作用域(scope), SPringle bean的作用域
"粗略实现spring创建bean"这个主题主要涉及到Spring如何初始化、配置以及管理Java对象,也就是我们所说的Bean。下面我们将深入探讨Spring Bean的生命周期、配置方式以及相关API。 1. Spring Bean 的生命周期 - ...
在Spring框架中,Bean的作用域(scope)是一项非常重要的特性,它决定了Bean实例的生命周期和管理方式。正确理解和运用Bean的作用域对于优化应用程序性能、简化开发流程具有重要意义。本文将详细介绍Spring中不同...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
创建SpringBean配置工具类(安全)如: <bean id=... scope="prototype"></bean>
6. **RequestScope**:在Web应用中,如果bean需要在一次HTTP请求的生命周期内保持一致,可以使用`@Scope("request")`。这样,每次请求都会创建新的bean实例,而不会影响其他线程。 理解并熟练掌握这些方法,有助于...
在配置Bean时,可以使用scope参数来指定Bean的作用域。 三、Bean的实现方式 Spring框架提供了多种方式来实现Bean,例如使用XML配置文件、使用Annotation配置等。 1. 使用XML配置文件:可以在XML配置文件中配置...
在Spring框架中,Bean生命周期是核心概念之一,它涉及到Bean的创建、初始化、使用和销毁等阶段。了解和掌握Bean生命周期对于开发高质量的Spring应用至关重要。以下是对Spring Bean生命周期的详细解析。 首先,Bean...
在Spring框架中,Bean的作用域是管理Bean实例创建和存活范围的重要概念。Bean的作用域决定了在特定...选择合适的作用域可以使Bean实例的创建和管理更加高效,避免不必要的资源消耗,同时确保应用程序的行为符合预期。
可以创建一个简单的Spring项目,尝试配置不同Scope的Bean,观察并理解它们在运行时的行为差异。 通过以上讲解,我们已经涵盖了Spring框架中IOC的基本概念以及Bean Scope的相关知识。理解这些内容对于开发和维护基于...
在Spring框架中,`scope`是一个非常重要的概念,它决定了Bean的生命周期和实例化策略。在Spring中,Bean的scope主要有以下几种: 1. **singleton(单例)**:这是默认的scope,每个容器中只有一个实例。无论多少次...
在注册时,Spring会根据@Bean、@Scope等注解确定Bean的作用域。默认情况下,Bean是单例(Singleton),但也可以配置为原型(Prototype)或其他作用域。 4. **Bean的依赖解析**: Spring会分析Bean之间的依赖关系...
Spring 使用注解方式创建 Bean Spring 框架中提供了多种方式来创建 Bean,使用注解方式创建 Bean 是其中的一种常用方式。下面将详细介绍使用注解方式创建 Bean 的步骤和相关知识点。 使用@Configuration 和@Bean ...
换言之,当把一个 bean 定义设置为 singleton 作用域时,Spring IoC 容器只会创建该 bean 定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该 bean 的后续请求和引用都将返回被...
默认情况下,Bean是单例(Singleton),但在`@Scope`注解的帮助下,我们可以创建原型(Prototype)、会话(Session)或请求(Request)作用域的Bean。 最后,`AutowireCandidateResolver`和`BeanFactoryAware`接口...
默认是`singleton`,意味着Spring容器只会创建一个Bean实例并共享给所有请求。 接下来,我们讨论Bean的别名配置。别名允许为同一个Bean定义多个名称,便于在不同的地方引用。在XML配置中,我们可以使用`alias`属性...
这种机制是通过Spring的Bean scope机制实现的, scope="singleton"表示该Bean是单例的。 与单例模式不同,Spring单例Bean是与其容器(ApplicationContext)密切相关的。同一个容器中,某个Bean只能创建一个实例,...
Spring的核心容器是整个框架的基础,它负责创建、配置和管理bean。主要有两个关键组件:BeanFactory和ApplicationContext。BeanFactory是Spring的基础容器,它提供bean的实例化、作用域、依赖注入、生命周期管理等...
- **@PostConstruct** 和 **@PreDestroy**:标记初始化和销毁方法,Spring会在Bean创建后和销毁前调用这些方法。 在`spring_autozp_demo`压缩包中,可能包含了一个Spring应用的示例代码,演示了如何使用上述注解和...
默认情况下,Bean的scope为"singleton",表示Spring容器只创建一个实例,并将其缓存。如果scope设为"prototype",每次请求都会创建一个新的Bean实例。 7. **销毁**:当容器关闭时,如果是"singleton"作用域的Bean,...