Bean的六种作用域及设置方式

Bean作用域:是指Bean在Spring框架中的某种行为模式/可用范围。Spring容器在初始化一个Bean的实例时,同时会指定该实例的作用域。

例如singleton单例模式,就表示Bean在整个Spring中只有一份,它是全局共享的,当其他人修改了这个值,另一个人读取到的就是被修改的值。

Spring中的Bean一共有6种作用域,前两种时core项目和MVC项目都可以用的,后四种是必须基于MVC项目的。即core项目中Bean有两种作用域,MVC项目中Bean有6种作用域。

一、singleton:单例作用域

含义描述:singleton模式下的Bean在IoC容器中只存在一个实例。获取和装配都是同一个对象。

应用场景:属性不需要更新的Bean。

注意:它是Spring中Bean的默认模式

二、prototype:原型作用域

含义描述:原型即原本的状态——多例模式,即每次对该作用域下的Bean请求都会创建新的实例。

应用场景:Bean属性需要更新

三、request:请求作用域

含义描述:与prototype比较像,每次http请求都会创建新的Bean实例。

应用场景:一次http请求和响应共享的Bean,新的轮次不共享

注意:限定web项目/mvc项目使用

四、seesion:回话作用域

含义描述:回话作用域,每次session会话共享一个Bean,比request大

应用场景:用户回话共享的Bean。例如:记录用户的登录信息。

注意:限定web项目/mvc项目使用

五、application:全局作用域(了解即可)

含义描述:一个http servlet Context中,定义一个Bean实例

应用场景:web应用的上下文信息。例如:记录一个应用的共享信息

注意:限定SpringMVC使用

六、websocket:HttpWebSocket作用域(了解即可)

含义描述:一个HTTP WebSocket中,定义一个Bean实例

应用场景:WebSocket的每次会话中,保存了⼀个Map结构的头信息,将⽤来包裹客户端消息头。第⼀次初始化后,直到WebSocket结束都是同⼀个Bean

注意:限定Spring WebSocket中使⽤ 。例如:网页客服

Spring中Bean作用域的设置方式

Bean作用域的设置方式只有一种——使用@Scope标签,但是写法有两种——1.直接设置值2.使用枚举设置。

例如:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
public class Users {
    @Scope("prototype")
    @Bean(name = "u1")
    public User user1() {
        User user = new User();
        user.setId(1);
        user.setName("张三"); 
        return user;
    }
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
public class Users {
    //ConfigurableBeanFactory.SCOPE.XXXXX
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @Bean(name = "u1")
    public User user1() {
        User user = new User();
        user.setId(1);
        user.setName("张三"); 
        return user;
    }
}

更推荐使用第二种,有提示,不容易写错。切记切记,不要低估自己的马虎心。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值