1.标量(字面量的注入)
所有的基本型,日期,字符串,基本型的包装类
<!--第一种方式-->
<property name="" value="18">
<!--第二种方式-->
<property name="age">
<value>18</value>
</property>
直接使用value属性,完成赋值。
2.配置合作者bean
合作者bean:简单的来说 就是一个bean的属性 不是字面量,而是一种复合类型.
<property name="属性名" ref="bean的id">
ref属性表示 注入的bean ref(表示关联的意思)如以下实列所示:
ref属性表示 注入的bean ref(表示关联的意思)
<property name="car">
<ref bean="car"/>
</property>
3.使用自动装配注入合作者bean
概念:指Spring容器 自动的装配bean与bean之间的依赖关系,即不需要显示的使用ref属性。
-
在beans中加入 default-autowire属性指定
-
在bean中加入 autowire指定
-
autowire
和default-autowire
可以接受如下值:-
no
: 不使用自动装配。Bean依赖必须通过ref元素定义。这是默认配置,在较大的部署环境中不鼓励改变这个配置,显式配置合作者能够得到更清晰的依赖关系。 -
byName
: 根据setter方法名进行自动装配。Spring容器查找容器中全部Bean,找出其id与setter方法名去掉set前缀,并小写首字母后同名的Bean来完成注入。如果没有找到匹配的Bean实例,则Spring不会进行任何注入。 -
byType
: 根据setter方法的形参类型来自动装配。Spring容器查找容器中的全部Bean,如果正好有一个Bean类型与setter方法的形参类型匹配,就自动注入这个Bean;如果找到多个这样的Bean,就抛出一个异常;如果没有找到这样的Bean,则什么都不会发生,setter方法不会被调用。 -
constructor
: 与byType类似,区别是用于自动匹配构造器的参数。如果容器不能恰好找到一个与构造器参数类型匹配的Bean,则会抛出一个异常。 -
autodetect
: Spring容器根据Bean内部结构,自行决定使用constructor或byType策略。如果找到一个默认的构造函数,那么就会应用byType策略。
-
PS:使用byType时,必须确认容器中所需要类型的bean只有一个。
4.注入嵌套bean
嵌套bean由于无法被Spring容器找到,所以嵌套bean只需要class属性,不需要写id或name.
<property name="car">
<bean class="com.demo.bean.Car">
.....
</bean>
</property>
5.集合类型的属性注入
对于List和数组类型的属性,在注入的时候使用list标签
<property name="nickNames">
<list>
</list>
</property>
如果list中泛型是字面量 则在list中使用value list中泛型是复合型 则在list内部使用 ref或者嵌套bean
对于Set类型的属性,同上。
<property name="nickNames">
<set>
</set>
</property>
对于Map类型的属性,在property内部使用map标签
<property name="">
<map>
<entry key="" value="" />
</map>
</property>
map中使用entry 表示一个键值对,如果是标量使用key和value 如果是复合型,使用key-ref和value-ref