Spring依赖注入为类属性赋值的方式

Spring依赖注入为类属性赋值的方式

这里有三种方式:

1.外部bean

引用IOC容器中的某个bean的id

2.使用级联的方式为bean赋值

要保证提前为clazz属性赋值或实例化

3.使用内部bean

只能在当前的内部使用,不能直接通过ioc容器获取

场景为在Student类中定义一个类类型的属性Clazz,我们去给这个类类型的属性赋值

以下为代码解析:
1.使用外部bean

    <bean id="studentFive" class="com.qcw.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>
    </bean>
        
    <bean id="clazzOne" class="com.qcw.spring.pojo.Clazz">
        <property name="cid" value="1111"></property>
        <property name="cname" value="王者班"></property>
    </bean>                    

2.使用级联的方式
级联的方式保证提前为clazz属性赋值或实例化,所以还需要定义如下的clazzOne类来先给这个类的属性赋值,其原因就是在studentFive这个bean里无法直接以class.cid的方式赋值,与mybatis的级联不同,这里的clazz本身就为null,所以无法通过类名.属性来赋值

    <bean id="studentFive" class="com.qcw.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>

        //使用级联的方式为bean赋值,要保证提前为clazz属性赋值或实例化
        <property name="clazz" ref="clazzOne"></property>
        <property name="clazz.cid" value="2222"></property>
        <property name="clazz.cname" value="星耀班"></property>
    </bean>
    <bean id="clazzOne" class="com.qcw.spring.pojo.Clazz">
        <property name="cid" value="1111"></property>
        <property name="cname" value="王者班"></property>
    </bean>

3.使用内部bean
只能在当前的内部使用,不能直接通过ioc容器获取

    <bean id="studentFive" class="com.qcw.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 id="clazzInner" class="com.qcw.spring.pojo.Clazz">
                <property name="cid" value="2222"></property>
                <property name="cname" value="星耀班"></property>
            </bean>
        </property>
    </bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值