今天主播对于Spring框架中的依赖注入的方式展开了学习:
1.set 注入(最常用、最简单)
1. 基本类型 & String
直接用value赋值
<property name="name" value="李老师" />
<property name="age" value="30" />
2. 数组
<property name="addrs">
<list>
<value>南京</value>
<value>北京</value>
<value>上海</value>
</list>
</property>
3. Set 集合
xml
<property name="set">
<set>
<value>AAA</value>
<value>BBB</value>
</set>
</property>
4. List 集合
<property name="list">
<list>
<value>TTT</value>
<value>VVV</value>
</list>
</property>
5. Map 集合
<property name="map">
<map>
<entry key="语文" value="80.5" />
<entry key="数学" value="84.5" />
</map>
</property>
6. Properties
<property name="properties">
<props>
<prop key="aaa">yyyy</prop>
</props>
</property>
7. 引用类型(ref)
<property name="dao" ref="dao" />
<bean id="dao" class="com.xzit.injection.TeacherDaoImpl" />
8. 注入 null
<property name="name">
<null />
</property>
简化写法:p 命名空间,本质是调用set方法
直接写在 bean 标签里,不用写<property>
xmlns:p="http://www.springframework.org/schema/p"
<bean id="girl" class="com.xzit.injection.Girl"
p:name="张三" p:height="170" />
<bean id="boy" class="com.xzit.injection.Boy"
p:name="李四" p:girl-ref="girl1" />
2 构造方法注入
适合必须有、不能为 null的依赖。
1. 普通写法
<bean id="student" class="com.xzit.injection.Student">
<constructor-arg name="name" value="张三" />
<constructor-arg name="age" value="20" />
<constructor-arg name="teacher" ref="a" />
</bean>
2. 简化写法:c 命名空间
xmlns:c="http://www.springframework.org/schema/c"
<bean id="student" class="com.xzit.injection.Student"
c:name="李四" c:age="22" c:teacher-ref="a" />
小技巧:4 种匹配方式
- 按参数顺序
- 按参数类型
- 按参数名字(最常用)
- 按索引 index
3 自动注入(偷懒神器)
只针对引用类型 ,不用写ref,Spring 自动找。
1. byName(按名字匹配)
类里的属性名 == bean 的 id
<bean id="student" class="com.xzit.auto.Student"
autowire="byName" />
2. byType(按类型匹配)
容器里同类型只能有一个,多了报错
<bean id="student" class="com.xzit.auto.Student"
autowire="byType" />