本文共 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的三种方式:
- 第一种方式,使用默认构造函数创建 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时,采用就是默认构造函数创建bean对象, 此时如果类中没有构造函数,则对象无法创建
- 第二种方式:使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)
- 第三种方式:使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入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/