spring中的Bean

Bean的概述

1.1

官方定义:SPringle IOC容器管理一个或者多个bean对象,这些bean是使用我们所提供给容器的配置元数据创建的

1.2

每个bean都有一个标识符id(如果有多个标识符,则额外的标识符被视为别名),id类型是一个string类型,如果我们不提供一个id,则容器会为bean生成唯一的标识符,但是这种方法如果我们要引用一个bean,就会比较麻烦
在实际开发中,我们可能需要给bean起别名,那么我们可以使用标签:

<alias name="oneName" alias="oherName" />

该标签标识,一个id为oneName的bean也可以通过otherName来引用

1.3

创建bean的三种方式:

  1. 第一种方式,使用默认构造函数创建 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时,采用就是默认构造函数创建bean对象, 此时如果类中没有构造函数,则对象无法创建
    在这里插入图片描述
    在这里插入图片描述
  2. 第二种方式:使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)
    在这里插入图片描述
  3. 第三种方式:使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器
    在这里插入图片描述

在这里插入图片描述

1.4

依赖注入(DI)是一个过程,其中的对象定义它们的依赖关系,依赖注入是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中,同样理解DI的关键就是:谁依赖了谁,为什么依赖,谁注入了谁,注入了什么

  • 谁依赖谁:当然是应用程序依赖于IOC容器
  • 为什么需要依赖:应用程序需要IOC容器来提供对象需要的外部资源
  • 谁注入了谁:很明显是IOC容器注入应用程序某个对象,应用程序依赖的对象
  • 注入了什么:就是注入某个对象所需要的外部资源
依赖注入能注入的数据
  • 基本数据类型(数字型和字符型)
  • String
  • 其他bean类型(在配置文件中或注解配置过的bean)
  • 复杂类型/集合类型
依赖注入的方式有三种

(1) 使用构造函数提供

  • 使用的标签是:constructor-arg
  • 标签出现的位置:bean标签的内部
  • constructor-arg标签中用于指定参数的属性标签
    • type属性:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或者某些参数的类型
    • index属性:用于指定要注入的数据给构造函数中指定索引位置的参数赋值。索引的位置 从0开始
    • name属性:用于指定给构造函数中指定名称的参数赋值
  • constructor-arg标签中用于赋值的标签:
    • value属性:用于指定基本类型和String类型的数据
    • ref属性:用于指定其他的bean类型数据,它指的是在spring的Ioc容器中出现过 的bean对象
  • 使用构造函数注入的优势:在获取bean对象时,注入数据是必须的操作,否则无法创建成功
  • 使用构造函数的弊端:改变了bean对象的实例化方式,是我们在创建对象时,如果我们用不到这些数据也必须提供
    在这里插入图片描述
    (2) 使用set方法提供
  • 标签:property
  • 标签出现的位置:bean标签的内部
  • 标签中用于指定参数的属性标签:
    • name:用于指定注入时所调用的set方法的名称(如果我们是使用Generate建立set方法,则name的取值就是字段名,如果是手动建立set方法,则name的取值就是set的方法名去掉set)
  • 标签中用于给参数赋值的属性标签
    • value:用于指定基本数据类型和string类型的数据
    • ref:用于指定其他的bean类型数据
  • set方法注入的优势:创建对象时没有明确的显示,可以使用默认构造函数
  • set方法注入的弊端:如果有某个成员必须有只,则获取对象时有可能set方法没有执行
    在这里插入图片描述
    (3)使用注解提供
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值