自动装配ByName与ByType

1、ByName自动装配

<bean id="cat" class="com.she.pojo.Cat"/>
<bean id="dog" class="com.she.pojo.Dog"/>
<!--byName:会自动在容器上下文查找,和自己对象set方法后面的值对应的bean的id!-->
<!--当上下文找不到与set方法对应的beanid时不会报错但是值为null-->
<bean id="user" class="com.she.pojo.User" autowire="byName">
    <property name="name" value="谁人骨"/>
</bean>

与下面代码效果一样

<bean id="cat" class="com.she.pojo.Cat"/>
<bean id="dog" class="com.she.pojo.Dog"/>
<bean id="user" class="com.she.pojo.User">
    <property name="name" value="谁人骨"/>
    <property name="cat" ref="cat"/>
    <property name="dog" ref="dog"/>
</bean>

注意点:
1.实体类中必须要有set方法
2.在实体类的set方法命名必须与bean中的id一致
3.保证bean的bean的id唯一
4.如果存在多个class相同的,如果有一个bean的id与set方法名一致可以正常运行,反之会报错

2、ByType自动装配

<bean id="cat" class="com.she.pojo.Cat"/>
<bean id="dog123" class="com.she.pojo.Dog"/>
<!--byType:会自动在容器上下文查找,和自己对象类型相同的bean!-->
<!--当存在两个及以上的相同对象类型的bean时会报错-->
<bean id="user" class="com.she.pojo.User" autowire="byType">
    <property name="name" value="谁人骨"/>
</bean>

注意点:
1.当存在单个bean的id与set方法名不一致又想让其自动注入时可以使用ByType注入,但需要注意不能存在多个class一致的。
2.虽然在实体类的set方法命名必须与bean中的id可以不一致,但是必须保证需要bean的class唯一,并且这个bean需要和自动注入的属性的类型一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值