#作用域定义
限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。 ⽽ Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就 表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀ 个⼈读取到的就是被修改的值。
#Bean的六种作用域
Spring 容器在初始化⼀个 Bean 的实例时,同时会指定该实例的作⽤域。Spring有 6 种作⽤域,最后 四种是基于 Spring MVC ⽣效的: 1. singleton:单例作⽤域 2. prototype:原型作⽤域(多例作⽤域) 3. request:请求作⽤域 4. session:会话作⽤域 5. application:全局作⽤域 6. websocket:HTTP WebSocket 作⽤域
1.Singleton
单例作用域是Spring中的默认作用域,该作用域下的Bean对象在IoC容器中只存在一个实例。

在上述代码中,我们使用getBean方法得到了两个对象user1和user2,但是他们输出的结果却是true,则可以说明此时我们获得的是同一个对象。
2.prototype
与单例模式不同,原型作用域也称多例作用域,在该作用域下的Bean请求都会重新创建新的实例。


此时我们使用 Scope注解使其成为原型作用域,可以看到此时打印的结果为false。

3.request
在该作用域下,每次http请求都会创建一个新的实例,也就是说在同一个http请求和响应下共用同一个实例。 该作用域只作用于SpringMVC。
4.session
同一个http请求的session共享一个bean,不同的session使用不同的bean。该作用域只在SpringMVC中使用。
5.application(了解)
在一个http请求的servlet context中定义了一个bean,限定一个bean的作用域是ServletContext的生命周期。该作用域只在SpringMVC中使用。
6.websocket(了解)
在⼀个http的WebSocket的⽣命周期中,定义⼀个Bean实例。该作用域只在SpringMVC中使用。


被折叠的 条评论
为什么被折叠?



