基于xml的自动装配赋值@Autowired

基于xml的自动装配赋值

private List<Book> books; // 一个人拥有多本书
public Person(Car car){
    this.car = car;
    System.out.println("可以为car赋值的有参构造器...");
}

<!--    这里必须定义为car 方便使用autowire="byName"以属性名作为id去容器中找到这个类组件-->
<!--    <bean id="car" class="com.lwt.bean.Car">-->
<!--        <property name="carName" value="机车1"></property>-->
<!--        <property name="price" value="520000"></property>-->
<!--    </bean>-->
<!--    <bean id="car01" class="com.lwt.bean.Car">-->
<!--        <property name="carName" value="机车2"></property>-->
<!--        <property name="price" value="520000"></property>-->
<!--    </bean>-->

为Person里自定义类型的属性赋值,property手动赋值
自动赋值装配:autowire=“default/no”
byName 以属性名作为id去容器中找到这个组件,给对象赋值,如果找不到就装配Null car = ioc.getBean(“car”)
byType 以属性类型作为依据去容器中找到这个组件 car = ioc.getBean(Car.class),只能有一个bean类型
constructor 按照构造器进行赋值 1)先按照有参构造器的类型进行装配,没有就为组件装配null
2)如果按照类型找到了多个;参数的名作为id继续匹配。

<!--    <bean id="person01" class="com.lwt.bean.Person" autowire="default">-->
<!--        <property name="car" ref="car01"></property>-->
<!--    </bean>-->
<!--    <bean id="person02" class="com.lwt.bean.Person" autowire="byName"></bean>-->
<!--    通过类型装配,限制只能有一个bean类型-->
    <bean id="person03" class="com.lwt.bean.Person" autowire="byType"></bean>
<!--    <bean id="person04" class="com.lwt.bean.Person" autowire="constructor"></bean>-->

<!--    集合private List<Book> books; 容器中可以把容器中所有book封装list赋值给这个属性-->
    <bean id="book01" class="com.lwt.bean.Book">
        <property name="bookName" value="Spring基础1"></property>
    </bean>
    <bean id="book02" class="com.lwt.bean.Book">
        <property name="bookName" value="Spring基础2"></property>
    </bean>
    <bean id="book03" class="com.lwt.bean.Book">
        <property name="bookName" value="Spring基础3"></property>
    </bean>
</beans>
/**
 * 测试 基于xml的自动装配
 */
@Test
public void test2(){
    Person bean = ioc.getBean(Person.class);
    System.out.println(bean);
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值