麻绳先生

做一些记录性的工作

spring中的依赖注入

依赖注入Dependency Injection;IOC的作用:降低程序之间的耦合、依赖关系;依赖关系的管理都交给spring维护;在当前类中需要的其他类的对象,由spring提供,只需要在配置文件中说明;依赖关系的维护称之为依赖注入。

依赖注入

能够注入的数据有三类

  • 基本数据类型和String
  • 其他bean类型(在配置文件或注解配置过的bean)
  • 复杂类型/集合类型
    注入的方式,三种
  • 使用构造函数提供
  • 使用set方法提供
  • 使用注解提供

构造函数注入

使用的标签:constructor-arg
标签出现的位置:bean标签的内部

1
<constructor-arg name="name"></constructor-arg>

标签中的属性:

  • type:用于指定要注入的构造函数参数列表中数据的数据类型
  • index:用于指定要注入的数据在构造函数参数列表中的索引值,从零开始
  • name:指定构造函数中的形式参数名称
  • value:用于提供基本数据类型和String类型的数据
  • ref:用于指定其他的bean类型数据,必须是在spring核心容器中出现过的bean对象

优势

在获取bean对象时,注入数据是必须的操作,否则无法创建对象

缺点

改变了bean对象的实例化方式,使我们在创建对象时必须提供指定的数据

set方法注入(更常用)

涉及的标签:property
出现的位置:bean标签内部
标签的属性

  • name:用于指定注入时使用的set方法名字,改名字是set方法去掉set后余下的部分,并且首字母小写
  • value:用于提供基本类型和String类型的数据
  • ref:用于指定其他的bean数据类型,必须是在spring核心容器中出现过的bean对象
    1
    <property name="username" value="test"></property>

复杂类型注入

用于给list结构集合注入使用标签list、array、set,可通用;
用于给map结构集合注入使用标签map、props,可通用;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<property name="mystring">
<list>
<value>abc</value>
<value>abc</value>
</list>
</property>
<property name="myarray">
<array>
<value>abc</value>
<value>abc</value>
</array>
</property>
<property name="myset">
<set>
<value>abc</value>
<value>abc</value>
</set>
</property>
<property name="mymap">
<map>
<entry key="a" value="1"></entry>
<entry key="b">
<value>2</value>
</entry>
</map>
</property>
<property name="myprop">
<props>
<entry key="a" value="1"></entry>
<entry key="b">
<value>2</value>
</entry>
</props>
</property>