Bean 的作用域 和 生命周期

文章详细介绍了Bean在Spring框架中的不同作用域,如singleton(单例)和prototype(原型),以及它们的行为模式。此外,还提到了request、session、application和websocket等特定于Web环境的作用域。文章还阐述了如何使用@Scope注解设置Bean的作用域,并概述了Spring管理Bean的生命周期,包括实例化、属性设置、初始化和销毁过程。
摘要由CSDN通过智能技术生成

Bean 的作用域

定义:

限定程序中,变量的可用范围叫做作用域,或者说在源代码中定义变量的某个区域就叫做作用域。 Bean 中 的作用域指的是 Bean 在 Spring 整个框架中的某种行为模式,比如说,singleton 单例作用域,就表示 Bean 在整个 Spring 中只有一份,它是全局共享的,那么当其他人修改了这个值之后,那么另一个人读取到的就是被修改的值。

作用域的类型:

singleton        单例作用域   (默认)

prototype       原型作用域   (多例作用域)   

        描述:每次对该作用域下的 Bean 的请求都会创建新的实例:获取 Bean       (applicationContext.getBean())及 装配 Bean (@Autowired)都是新的对象实例。

request          请求作用域

        描述:每次 http 请求会创建新的 Bean 实例,类似于 prototype。 限定 springMVC。

session          会话作用域

        描述:在一个 http session 中,定义一个 Bean 实例。限定 springMVC。

application     全局作用域

        描述:在一个http servlet Context中,定义一个 Bean实例。限定 springMVC。

websocket      HTTP  WebSocket 作用域

        描述:在HTTP WebSocket 的生命周期中,定义一个Bean 实例。限定 Spring WebSocket。

设置作用域

我们使用 @Scope 注解来声明 作用域。

格式一:

@Scope("prototype")
    @Bean
    public User user1() {
        User user = new User();
        user.setId(1);
        user.setName("Java");
        return user;
    }

格式二:(推荐)

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @Bean
    public User user1() {
        User user = new User();
        user.setId(1);
        user.setName("Java");
        return user;
    }

Spring 主要执行流程

1.启动Spring 容器

2.实例化 Bean (分配内存空间,从无到有)

3.Bean 注册到 Spring 中 (存操作)

4.将 Bean 装配到需要的类中 (去操作)

Bean 的生命周期

1.实例化 Bean (为 Bean 分配内存空间)

2.设置属性 (Bean 注入和装配)

3.Bean 初始化

        3.1 执行各种通知

        3.2 初始化前置方法   ((1.0) xml 里面定义 init-method | 

                                              (2.0)(比前者先执行)@PostConstruct)

        3.3 初始化方法

        3.4 初始化后置方法

4.使用 Bean

5.销毁 Bean  (xml destroy-method |  @PreDestroy)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值