博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring中的Bean
阅读量:2429 次
发布时间:2019-05-10

本文共 1522 字,大约阅读时间需要 5 分钟。

Bean的概述

1.1

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

1.2

每个bean都有一个标识符id(如果有多个标识符,则额外的标识符被视为别名),id类型是一个string类型,如果我们不提供一个id,则容器会为bean生成唯一的标识符,但是这种方法如果我们要引用一个bean,就会比较麻烦

在实际开发中,我们可能需要给bean起别名,那么我们可以使用标签:

该标签标识,一个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)使用注解提供

转载地址:http://hojmb.baihongyu.com/

你可能感兴趣的文章
Docker是啥?容器变革的火花?
查看>>
假如从餐饮店的角度来看架构…
查看>>
这个充电宝太黑科技了,又小又不用自己带线,长见识了~
查看>>
HDC.2019后再发力,AppGallery Connect服务新升级
查看>>
网易云音乐热评的规律,44万条数据告诉你
查看>>
超神!GitHub 标星 5.5w,如何用 Python 实现所有算法?
查看>>
扛住100亿次请求——如何做一个“有把握”的春晚红包系统
查看>>
在北京看场雪为什么这么难?
查看>>
新年了,5G手机芯片,到底买谁?
查看>>
疫情之下「在家办公模式」开启,你该选择哪些远程协同工具?
查看>>
如何使用pdpipe与Pandas构建管道?
查看>>
远程办公的33种预测
查看>>
阿里巴巴架构师:十问业务中台和我的答案
查看>>
华为云发布三类六款计算实例 打造更强云端计算能力
查看>>
PHP 语言地位遭受挑战,PHP 程序员路在何方?
查看>>
PostgreSQL好评如潮,它是如何做到的?
查看>>
2017码云群英会,共享开源技术盛宴
查看>>
看完这份参会指南,Get 2017 OSC 年终盛典正确参会姿势!
查看>>
盛食厉兵 中科天玑挖掘大数据价值助力行业数字化转型
查看>>
白鹭引擎正式支持微信小游戏开发
查看>>