spring ioc容器中创建bean的方法

1.set方法注入

<!--DI依赖注入的方式:set方法注入    -->
    <bean id="car" class="dao.Car">
        <property name="brand" value="奥迪双钻"></property>
        <property name="crop" value="我的伙伴"></property>
        <property name="price" value="400000"></property>
    </bean>

会调用Car的set方法,怎样确定对应哪个属性,则由set方法后的名字决定
如:setBrand 就对应上述bean对象的brand属性。
2.构造器方式注入

<!--DI依赖注入的方式:构造器的方式注入    -->
    <bean id="car1" class="dao.Car">
        <constructor-arg value="宝马" index="0"></constructor-arg>
        <constructor-arg value="50000" index="2" type="java.lang.Double"></constructor-arg><!-- type表示要赋给那种类型的参数-->
        <constructor-arg value="一汽" index="1"></constructor-arg>
    </bean>

会调用Car类的构造器来定义bean对象属性,(要注意要定义空的构造器)如:

//后定义的构造器,获取的时候先获取(有除构造方法以外的其它方法的时候),否则就是相反
    public Car() {
    }
    public Car(String brand, String crop, Double price) {
        this.brand = brand;
        this.crop = crop;
        this.price = price;
    }

3.p命名空间配置bean

<!--使用p命名空间的语法配置bean 本质上还是set方法配置-->
    <bean id="car2" class="dao.Car"
          p:brand="福特" p:crop="长安" p:price="300000" p:speed="260" >
    </bean>

4.字面量,可以在赋值的时候如果要赋单引号‘ 或者双引号 “时使用

<!-- 字面量测试-->
    <!--   <![CDATA[任意字符]]-->
    <bean id="book" class="dao.Book">
        <property name="bookId" value="2010"></property>
        <property name="bookName" >
            <value><![CDATA[& ' "]]></value>
        </property>
    </bean>

5.引用其它bean(使用ref) 只能是ioc容器里的bean,以及给级联属性赋值

    <bean id="person1" class="dao.Person1">
        <property name="id" value="2010"></property>
        <property name="name" value="我最帅"></property>
        <property name="car" ref="car1"></property>

        <!-- 给级联属性赋值-->
        <property name="car.speed" value="200"></property>
    </bean>

6.内部bean

<!-- 测试内部bean   -->
    <bean id="person2" class="dao.Person1">
        <property name="id" value="202"></property>
        <property name="name" value="我"></property>
        <property name="car">
            <!-- 内部bean不需要id-->
            <bean class="dao.Car">
                <property name="brand" value="Mini"></property>
                <property name="crop" value="宝马"></property>
                <property name="price" value="200000"></property>
                <property name="speed" value="200"></property>
             </bean>
        </property>
    </bean>

7.当类对象的类属性 是list 或者 map类型时

<!-- List集合-->
    <bean id="personList" class="dao.PersonList">
        <property name="name" value="Tom"></property>
        <property name="cars" ref="listBean">
<!--            <list>-->
<!--                <ref bean="car"/>-->
<!--                <ref bean="car1"/>-->
<!--                <ref bean="car2"/>-->
<!--            </list>-->
        </property>
    </bean>
    <!--测试Map-->
    <bean id="personMap" class="dao.PersonMap">
        <property name="name" value="JOY"></property>
        <property name="cars">
            <map>
                <entry key="AA" value-ref="car"></entry>
                <entry key="BB" value-ref="car"></entry>
                <entry key="CC" value-ref="car"></entry>
            </map>
        </property>
    </bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值