spring_bean&生命周期

1、bean与bean之间的关系

1.继承

  a.在子bean中通过parent来指定父bean,实现继承关系.

  b.在父bean中可以使用abstract=true,将父bean声明为抽象bean.

  c.抽象bean不能实例化对象.可以省略class的配置.

  d.子bean能从父bean继承相关的配置。但是autowire 以及abstract不能继承.

2.依赖

  a.通过depends-on指定所依赖的bean,实现依赖关系

  b.被依赖的bean会在当前bean之前创建.

  c.依赖就是依赖,不会进行赋值.

2、bean的作用域

    0.通过scope属性来指定bean的作用域.

1.singleton

  单例的.在容器初始化的时候就会创建单例bean的实例对象,在容器整个生命周期期间,只会存在一个该bean的

  对象.

2.prototype

  原型的。在容器初始化的时候不会创建该bean的对象,而是在每次getBean的时候才创建对象.在整个容器

  的生命周期期间理论上会存在多个该bean的对象.

3.request

  在一次请求期间创建一个bean的实例对象

4.session

  在一次回话期间创建一个bean的实例对象

3、引入外部化的属性文件

    1.需要导入context命名空间

   2.<context:property-placeholderlocation="classpath:db.properties"/>来引入外部化配置文件

    3.使用${key}来获取配置文件中的值.

4、SPEL

    语法:使用#{表达式}.

1.进行字面量的赋值

2.可以使用value来进行bean的引用

3.可以进行运算,判断

4.可以调用对象的方法 以及静态属性、静态方法

5.支持正则表达式的匹配运算

5、bean的生命周期

1.不使用bean的后置处理器,生命周期分为五个阶段

  a.调用构造器创建bean的对象

  b.给属性赋值(普通属性/字面值    引用属性/bean的引用)

  c.调用初始化方法   在bean的配置中通过init-method来指定

  d.使用bean

  e.容器关闭的时候,调用销毁方法  在bean的配置中通过destroy-method来指定.

    2.使用bean的后置处理器,分为七个阶段:

      a.在1的基础上,在调用初始化方法的前后多出两个阶段.

      b.bean的后置处理器: 实现BeanPostProcessor接口,实现两个抽象方法,在xml中配置.

6、bean的配置方式

1.全类名(反射)

2.工厂:

  a.静态工厂

   b.实例工厂

3.FactoryBean

  a.实现FactoryBean接口,实现三个抽象方法

   b.具体的对象是由getObject方法进行返回的.

7、基于注解配置

    1.常用的注解

      @Component

      @Controller

      @Service

      @Repository

      @Autowired

      @Qualifier

    2.开启注解扫描

  <context:component-scanbase-package="包名"></context:component-scan>

  <context:include-filter type="annotation/assignable" expression="注解的全类名/具体的类名"/>

   需要与use-deafult-filters=false来一起使用

  <context:exclude-filter type="annotation/assignable" expression="注解的全类名/具体的类名"/>

    3.组件装配

   @Autowired:

    优先使用byType的方式匹配兼容的bean进行注入

    如果有多个兼容的bean,则尝试使用byName的方式进行匹配

    默认情况下,被@Autowired标注的属性必须要注入值.可以使用required=true/false来配置.

  @Qualifier("id值"):具体指定要注入的bean

 

bean的生命周期:https://www.cnblogs.com/javazhiyin/p/10905294.html

posted @   diligently  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示