2021-10-16

本文详细介绍了Spring框架中实现依赖注入的三种方式:外部引入、内部引入和级联引入。外部引入是在声明目标bean时引用已存在的bean;内部引入则是在声明bean的同时创建并注入所需对象;级联引入结合了两者,先声明对象,然后通过反射机制设置属性值。这些方法帮助开发者更好地管理和组织对象间的依赖关系。
摘要由CSDN通过智能技术生成

Spring依赖注入对象的三种方式

外部引入

在需要引入对象之前,先声明这个对象,告诉bean为我们准备一个需要的对象,下面以Date作为例子
<!--告诉对象准备一个Date对象 -->
    <bean id="date1" class="java.util.Date"></bean>

    <bean id="mouse1" class="com.msb.bean.Mouse">
        <property name="name" value="Jerry"></property>
        <!--bean引用 引用外部bean-->
        <property name="birthdate" ref="date1"></property>
    </bean>

内部引入

假设我们有一个猫类和一个老鼠类,猫类中有一个老鼠了的属性。当我们需要为猫类引用老鼠类对象时,可以直接在声明猫类的内部为属性赋值的时候,再来声明这个老鼠类,为这个老鼠类来赋值。如下例所示。
	<bean id="cat1" class="com.msb.bean.Cat">
        <property name="name" value="Tom"></property>
        <!--bean引用 引用内部bean-->
        <property name="mouse1">
            <bean class="com.msb.bean.Mouse">
                <property name="name" value="Jerry2"></property>
                <property name="birthdate">
                    <bean class="java.util.Date"></bean>
                </property>
            </bean>
        </property>
    </bean>

级联引入

和内部引入对象类似,在引入对象之前,先声明这个对象,但是不赋值,在用到的时候再来为这个被引用到的对象来赋值,但是需要注意的是就,级联引入用到的实际是反射机制调用get/set方法来为被引用对象赋值,所以在猫类需要提供相应的get/set方法。下面是例子

    <bean id="mouse2" class="com.msb.bean.Mouse"></bean>
    <bean id="cat2" class="com.msb.bean.Cat">
        <property name="name" value="Tom2"></property>
        <!--级联引入bean-->
        <property name="mouse1" ref="mouse2"></property>
        <!--用反射调用get***方法,获得对象之后,再赋值-->
        <property name="mouse1.name" value="Jerry3"></property>
        <property name="mouse1.birthdate">
            <bean class="java.util.Date" ></bean>
        </property>
    </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值