Spring中bean的范围

简介:
Spring中有5种bean的范围:

5 types of bean scopes supported :

  1. singleton – Return a single bean instance per Spring IoC container 这个范围也是默认的
  2. prototype – Return a new bean instance each time when requested
  3. request – Return a single bean instance per HTTP request. *
  4. session – Return a single bean instance per HTTP session. *
  5. globalSession – Return a single bean instance per global HTTP session. *

P.S * means only valid in the context of a web-aware Spring ApplicationContext

我们看个关于singleton and prototype.的例子:

1
2
3
4
5
6
7
8
9
10
11
12
public  class  CustomerService
{
     String message;
  
     public  String getMessage() {
         return  message;
     }
  
     public  void  setMessage(String message) {
         this .message = message;
     }
}

1. Singleton example

1
2
3
4
5
6
7
8
9
     xsi:schemaLocation="http: //www.springframework.org/schema/beans
     http: //www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  
        <bean id= "customerService"
             class = "com.mkyong.customer.services.CustomerService"  />
  
</beans>

  运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public  class  App
{
     public  static  void  main( String[] args )
     {
         ApplicationContext context =
          new  ClassPathXmlApplicationContext( new  String[] { "Spring-Customer.xml" });
  
         CustomerService custA = (CustomerService)context.getBean( "customerService" );
         custA.setMessage( "Message by custA" );
         System.out.println( "Message : "  + custA.getMessage());
  
         //retrieve it again
         CustomerService custB = (CustomerService)context.getBean( "customerService" );
         System.out.println( "Message : "  + custB.getMessage());
     }
}

  输出为:

Message : Message by custA
Message : Message by custA

2. Prototype example

1
2
3
4
5
6
7
8
9
     xsi:schemaLocation="http://www.springframework.org/schema/beans
  
    < bean  id="customerService" class="com.mkyong.customer.services.CustomerService"
          scope="prototype"/>
  
</ beans >

  运行输出为:

Message : Message by custA
Message : null

也可以使用注解来做这些事情:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package  com.mkyong.customer.services;
  
import  org.springframework.context.annotation.Scope;
import  org.springframework.stereotype.Service;
  
@Service
@Scope ( "prototype" )
public  class  CustomerService
{
     String message;
  
     public  String getMessage() {
         return  message;
     }
  
     public  void  setMessage(String message) {
         this .message = message;
     }
}

  

1
2
3
4
5
6
7
8
9
10
11
     xsi:schemaLocation="http: //www.springframework.org/schema/beans
     http: //www.springframework.org/schema/beans/spring-beans-2.5.xsd
     http: //www.springframework.org/schema/context
     http: //www.springframework.org/schema/context/spring-context-2.5.xsd">
  
        <context:component-scan base- package = "com.mkyong.customer"  />
  
</beans>
目录
相关文章
|
开发框架 Java 开发者
Spring-bean
Spring-bean
37 0
|
5月前
|
XML Java 数据格式
Spring中的bean相关问题
Spring Bean是构建Spring应用的核心元素。熟悉Bean的声明方式、作用域、生命周期以及自动装配机制对于开发高效、健壮的Spring应用至关重要。希望以上内容能够为您在使用Spring框架时提供有效的指南和帮助。
48 1
|
5月前
|
IDE Java 开发工具
解决非Spring Bean访问Spring Bean的问题:实用指南
在非SpringBean类中直接获取SpringBean可能会引发问题,例如上面案例里提到的空指针和自动装配失败。为避免这些问题,建议将需要访问Spring Bean的类也注册为Spring Bean,以确保依赖关系得到正确管理。
52 0
|
7月前
|
Java 数据库连接 开发者
深入理解Spring Boot中的@Bean注解
【4月更文挑战第22天】在 Spring Boot 应用开发中,@Bean 注解是一种非常重要的方法,用于在配置类中声明单个 Bean,从而使 Spring 容器能够管理这些 Bean。本篇技术博客将详细解析 @Bean 注解的概念,并通过具体的实战示例展示如何有效地使用这一注解优化应用的配置和管理
516 5
|
7月前
|
XML Java 数据格式
Spring Bean
【4月更文挑战第30天】Spring Bean
36 0
|
监控 Java Spring
1.6 Spring Bean
在Spring应用中,Spring IoC容器可以创建、装配和配置应用组件对象,这里的组件对象称为Bean(Bean是注册到Spring容器中的Java类,任何一个Java类都可以是一个Bean)。
53 0
|
XML Java API
Spring学习-Bean的理解
Spring学习-Bean的理解
215 0
|
XML Java 测试技术
详细讲解Spring中的@Bean注解
详细讲解Spring中的@Bean注解
905 0
详细讲解Spring中的@Bean注解
|
XML Java 数据格式
Spring中Bean
Spring中Bean
61 1
|
XML 搜索推荐 Java
【Spring5】基于注解的Bean管理简直是Spring中的Spring(上)
文章目录 1 什么是注解 2 基于注解方式实现对象的创建 3 组件扫描配置的细节 4 基于注解实现属性的注入 4.1 几种注解概述 4.2 @Autowire注解演示 4.3 @Qualifier注解演示 4.4 @Value注解演示 5 纯注解的开发模式 写在最后
【Spring5】基于注解的Bean管理简直是Spring中的Spring(上)