5.依赖注入之为类类型的属性赋值

 一:引入外部的bean

 <bean id="studentFive" class="com.tian.spring.pojo.Student">
        <property name="sid" value="1004"></property>
        <property name="sname" value="赵六"></property>
        <property name="age" value="26"></property>
        <property name="gender" value="男"></property>
        <!--ref:引用IOC容器中的某个bean的id-->
        <property name="clazz" ref="clazzOne"></property>
    </bean>

    <bean id="clazzOne" class="com.tian.spring.pojo.Clazz">
        <property name="cid" value="1111"></property>
        <property name="cname" value="最强王者"></property>
    </bean>

测试类: 

    @Test
    public void testDI(){
        //获取IOC容器
        ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc.xml");
        //获取bean
        Student student = ioc.getBean("studentFive", Student.class);
        System.out.println(student);
    }

结果:

Student{sid=1004, sname='赵六', age=26, gender='男', score=null, clazz=Clazz{cid=1111, cname='最强王者'}}

二:级联方式

    <bean id="studentFive" class="com.tian.spring.pojo.Student">
        <property name="sid" value="1004"></property>
        <property name="sname" value="赵六"></property>
        <property name="age" value="26"></property>
        <property name="gender" value="男"></property>
        <property name="clazz" ref="clazzOne"></property>
        <!--级联的方式,要保证提前为clazz属性赋值或者实例化-->
        <property name="clazz.cid" value="2222"></property>
        <property name="clazz.cname" value="远大前程班"></property>
    </bean>
    
    <bean id="clazzOne" class="com.tian.spring.pojo.Clazz">
        <property name="cid" value="1111"></property>
        <property name="cname" value="最强王者班"></property>
    </bean>

结果:

Student{sid=1004, sname='赵六', age=26, gender='男', score=null, clazz=Clazz{cid=2222, cname='远大前程班'}}

 

注意使用级联的方式一定要先为clazz属性赋值或者实例化

否则报NullValueInNestedPathException错误

三:内部bean

    <bean id="studentFive" class="com.tian.spring.pojo.Student">
        <property name="sid" value="1004"></property>
        <property name="sname" value="赵六"></property>
        <property name="age" value="26"></property>
        <property name="gender" value="男"></property>
        <property name="clazz">
            <!--内部bean,只能在当前bean的内部使用,不能直接通过IOC容器获取-->
            <bean id="clazzInner" class="com.tian.spring.pojo.Clazz">
                <property name="cid" value="2222"></property>
                <property name="cname" value="远大前程班"></property>
            </bean>
        </property>
    </bean>

结果:

Student{sid=1004, sname='赵六', age=26, gender='男', score=null, clazz=Clazz{cid=2222, cname='远大前程班'}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值