Spring的作用域和生命周期

目录

1.Bean的作用域

2.Bean的作用域的分类

3.设置作用域

4.Spring的执行流程(生命周期)

5.Bean的生命周期


1.Bean的作用域

lombok (dependency依赖) 是为了解决代码的冗余(比如说get和set方法)那些构造类所必要的方法

是为了更简单的替代java中必要代码的工具

2022以后的IDEA不需要添加lombok插件

@Date是个复合注解 就是@Setter和@Getter和@toString等等

Bean的作用域:bean在整个Spring当中是单例模式,

2.Bean的作用域的分类

官话:

bean的作用域默认是

1.Singleton单例模式(单例模式又分为饿汉和懒汉)因为单例模式性能最优所以Spring默认选择它

2.prototype 原型模式(多例模式)   每次取的都是类的原生的模式(类似于深克隆

3.request 请求作用域,类似与pototype的每次请求都会根据原型深拷贝一个实例,区别是它部分共享一个Bean(在一个Http请求和响应中共享一个bean)

限定SpringMVC中使用

4.session 作用域 :一次会话中共享一个bean对象。 同样只适用于SpringMVC

application 应用在SpringMVC里面 singsleton应用在Spring core里面,二者都是单例模式

application 归属于  ApplicationContext          singsleton 归属于IOC容器

3.设置作用域

用@Scope("prototype")

在@Bean上面设置,在注入Bean的时候设置

加了之后的影响是:每次去拿存入Spring中的对象的时候,不管中途有没有被修改,它拿到的是原来的那份。(实际上就算是修改也是修改的原来的拷贝)也就是变成了多例模式

4.Spring的执行流程(生命周期)

1.启动容器(加载xml配置)

2.加载bean对象(Bean对象的初始化)   加载bean标签/base-package加载扫描路径

3.根据注解(@Controller等)注册Bean到Spring容器中

4.装配Bean的属性(从Spring中取出Bean 放入属性 (private Stu stu))

5.Bean的生命周期

1.实例化Bean,这时候只是分配了内存,得到了毛坯房

2.属性赋值: 属性注入,setter注入   构造方法注入          ex:买了装修的材料,引用外部资源

3.Bean初始化                                                                  ex:装修

        a)实现了各种Aware通知的方法                               ex:各种通知,通知师傅

        b) 执行 BeanPostProcessor 初始化前置方法          ex :师傅们到场,勘察环境指定方

        c1)执行  @PostConstruct初始化方法

        c2)执行  xml里面的init-method方法                           ex :正式装修,先让使用科技的自动化注解师傅装修,再让传统的进行装修     

        

        d)执行 BeanPostProcessor 初始化后置方法           ex :打扫垃圾(木屑 油漆)等等

4.使用Bean                                                                      ex:住房子

5.销毁Bean                                                                      ex :卖房子

 属性注入是在初始化前面的,这个题目中A依赖于B,B依赖于C。如果从Spring中想要获取到A的对象,那么先执行A的属性注入,从代码中可以看到A需要B的属性注入,B又需要C的属性注入,C没有属性注入,然后执行C的初始化,打印了

此时C对象已经生成

然后执行

 此时B对象已经生成

然后回到第一个完成A的初始化。

也就是如果一直依赖下去的话都会执行一半的属性注入,然后下潜知道最后一个依赖对象构造完毕,然后再一级一级返回。类似于递归

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Bean 的作用域生命周期Spring 框架中非常重要的两个概念,这里简单介绍一下。 1. Bean 的作用域Spring 中,Bean 的作用域指的是 Bean 实例的创建和销毁的范围。Spring 提供了以下五种作用域: - singleton:单例模式,容器中只有一个 Bean 实例,所有对 Bean 的请求都将返回同一个实例。 - prototype:每次请求都会创建一个新的 Bean 实例。 - request:每个 HTTP 请求都会创建一个新的 Bean 实例。 - session:每个 HTTP Session 都会创建一个新的 Bean 实例。 - global session:基于 Servlet 3.0+ 的环境下,每个全局的 HTTP Session 都会创建一个新的 Bean 实例。 2. Bean 的生命周期 Bean 的生命周期指的是 Bean 实例从创建到销毁的整个过程。Spring 提供了以下七个阶段: - 实例化 Bean:Spring 根据 Bean 的定义创建一个 Bean 的实例。 - 设置 Bean 属性:Spring 将配置文件中的属性设置到 Bean 实例中。 - BeanNameAware:如果 Bean 实现了 BeanNameAware 接口,Spring 将 Bean 的 ID 传递给 setBeanName 方法。 - BeanFactoryAware:如果 Bean 实现了 BeanFactoryAware 接口,Spring 将 BeanFactory 实例传递给 setBeanFactory 方法。 - InitializingBean:如果 Bean 实现了 InitializingBean 接口,Spring 将调用 afterPropertiesSet 方法。 - 自定义初始化方法:Bean 可以配置自定义的初始化方法。 - DisposableBean:如果 Bean 实现了 DisposableBean 接口,Spring 将调用 destroy 方法。 - 自定义销毁方法:Bean 可以配置自定义的销毁方法。 以上就是 Spring Bean 的作用域生命周期的简单介绍。理解 Bean 的作用域生命周期对于正确使用 Spring 框架非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值