DI( Dependency Injection)
基于set的注入
- spring内置类型直接注入
<bean id="person" class="com.domain.Person">
<property name="name" value="uzi"></property>
<property name="age" value="19"></property>
<property name="list">
<list>
<value>a</value>
<value>aa</value>
</list>
</property>
<property name="set">
<set>
<value>a</value>
<value>b</value>
</set>
</property>
<property name="map">
<map>
<entry key="aa" value="ee"></entry>
</map>
</property>
<property name="prop">
<props>
<prop key="a">b</prop>
</props>
</property>
</bean>
- 注入自定义对象
<bean id="hero" class="com.domain.Hero">
<property name="dog" ref="dog"></property>
</bean>
<bean id="dog" class="com.domain.Dog"></bean>
- 利用构造方法注入
<!--index:为构造方法的第几个参数 进行配置
**index 和 name 可以配置任何一个或同时配置 但要求一旦配置必须正确
**推荐优先使用index方式配置 防止没有源码造成name无法匹配到对应参数
name:为构造方法的哪个名字的参数进行配置
type:该构造方法参数的类型
value:该构造方法参数的值 ,用来指定基本值
ref:该构造方法参数的值,用来指定引用其他bean的值
-->
<bean id="person" class="com.domain.Person">
<constructor-arg index="0" value="徐悦"></constructor-arg>
<constructor-arg index="1" value="24"></constructor-arg>
</bean>
-
自动装配
对于set注入,可以开启自动装配,利用ID或者类型自动寻找,一般用于自定义对象set注入,还是必须要有无参构造
<bean id="hero" class="com.domain.Hero" autowire="byName"></bean>
也可以整个容器的自动装配
default-autowire="byName"