配置依赖关系全面解析
DI分成:
–设置注入:<property>
–构造器注入:<constructor-arg>
–接口注入
无论哪个注入,都涉及到传入参数值
参数值:
–标量类型:(8个基本类型+string)
用value属性或value子元素传入值
<bean id="dog"
class="org.fkjava.spring.service.implement.Dog"
p:age="12" c:_0="wangcai"/
<bean id="dog"
class="org.fkjava.spring.service.implement.Dog"
**p:age-ref**="12" c:_0="wangcai"/>
–复合类型
A.用ref属性或者value子元素传入值
B。用嵌套bean
将bean元素直接放在或者子元素中
这样嵌套bean所生生成的对象将作为这个setter方法或者构造器参数
嵌套bean与普通bean的区别在于:位置不同,嵌套bean不能通过spring容器获取,不需要id值
嵌套的好处在于:提供了更好的封装性
缺点:丧失一部分的灵活性
<bean id="hunter" class="org.fkjava.spring.service.implement.Hunter" >
<property name="dog">
<bean id="dog" class="org.fkjava.spring.service.implement.Dog"
p:age="12" c:_0="wangcai"/>
</property>
</bean>
C。用自动封装
利用autowire属性来指定,该属性支持如下属性值:
-no 不自动装配(默认)
–byname :根据setter方法的方法名,去掉set后找是否有id为此名的bean,如果没有找到此bean将不报错
–bytype:根据setter方法的参数类型,如果正好有一个bean类型与参数类型相同则自动注入,如果有多个,报异常,如果找不到,也不报错
–集合和数组