spring之bean的作用域

本文内容纲要:

- 一 前言

- 二 bean的作用域

- 2.2 单例示例

- 2.2 原型示例

一 前言

五一了来一篇轻松的文章;关注公众号:知识追寻者;

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 bean的作用域

spring定义了多种bean的作用域,常用的4种如下:

  1. 单例(Singleton):在整个应用中,只创建bean的一个实例。
  2. 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。
  3. 会话(Session):在Web应用中,为每个会话创建一个bean实例。
  4. 请求(Request):在Web应用中,为每个请求创建一个bean实例。

在spring容器中由spring管理的bean默认都是单例;

2.2 单例示例

使用@Scope注解指定作用域类型;

单例即一个对象仅有一个实例;

被单类

/**

* @Author lsc

* <p> </p>

*/

@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)

// 等同于@Scope("singleton")

@Component

public class Sheet {

}

配置类

/**

* @Author lsc

* <p> </p>

*/

@Configuration

@ComponentScan

public class Config {

}

测试

public static void main(String[] args) {

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);

// 单例测试

Sheet sheetA = context.getBean(Sheet.class);

Sheet sheetB = context.getBean(Sheet.class);

// sheetA = sheetB? true

System.out.println("sheetA = sheetB? " + sheetA.equals(sheetB));

}

2.2 原型示例

原型就是多例,一个对象有多个实例;

棉类

/**

* @Author lsc

* <p> </p>

*/

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

@Component

public class Cotton {

}

测试

public static void main(String[] args) {

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);

// 原型 多例测试

Cotton cottonA = context.getBean(Cotton.class);

Cotton cottonB = context.getBean(Cotton.class);

// cottonA 与 cottonB 是否相等:false

System.out.println("cottonA 与 cottonB 是否相等:" + cottonA.equals(cottonB));

context.close();

}

本文内容总结:一 前言,二 bean的作用域,2.2 单例示例,2.2 原型示例,

原文链接:https://www.cnblogs.com/zszxz/p/12813602.html

以上是 spring之bean的作用域 的全部内容, 来源链接: utcz.com/z/362422.html

回到顶部