SpringBoot(24) — @Scope设置bean的作用
2021-08-19 本文已影响0人
奔跑的佩恩
前言
在上篇我们已经讲过了注解@Conditional
可用于做IoC
内Bean
的属性检测,大家有兴趣的话,可参考SpringBoot(23) — @Conditional检测数据库连接参数
其实,加载到IoC
中的Bean
都是有作用域的。而设置Bean
的作用域又涉及到注解@Scope
的使用。那么,今天就让我们来学习下bean
作用域的相关知识吧。
今天涉及的知识有:
-
Spring
中Bean
的作用域 -
@Scope
设置Bean
的作用域 - Spring MVC 作用域
一. Spring中Bean的作用域
在Spring
中,Bean
的作用域为以下列表:
作用域类型 | 使用范围 | 作用域描述 |
---|---|---|
singleton | 所有Spring应用 | 默认值,IoC容器只存在单例 |
prototype | 所有Spring应用 | 每次从IoC容器中取出都是一个bean,都创建一个新的bean |
session | Spring web应用 | Http会话 |
application | Spring web应用 | web工程生命周期 |
request | Spring web应用 | web工程单次请求 |
globalSession | Spring web应用 | 在一个全局的 httpSession中,一个bean对应一个实例。实践中基本不使用 |
这里我们需要注意的是,在Spring
中,Bean
的默认作用域为单例模式,即为singleton
模式。
二. @Scope 设置 Bean 的作用域
这里我们新建一个类——TestScope
, 用于测试@Scope
设置Bean
作用域的问题。下面先列出项目架构:
以上截图中
AppConfig
为项目配置文件。下面先给出
TestScope
代码(标注@Component
注解):