首页 > 编程语言 > 详细

SpringIOC容器-xml配置bean-反射构造器-属性注入(引用数据类型)

时间:2020-04-17 16:20:26      阅读:59      评论:0      收藏:0      [点我收藏+]

一、实验使用实体类

技术分享图片

Person类中有一个属性的类型是Car类型

这里不再提供Car类的有参构造方法,因为Car类这里只是为了new对象被Person所注入

Person提供有参构造方法

//无参构造
public Person() {
}
//有参构造
public Person(String name, int age, Car car) {
    this.name = name;
    this.age = age;
    this.car = car;
}

 

在setter注入和构造器注入都可以的时候,(property和constructor-arg)这两个标签可以换着用,注意级联操作的时候只能使用perpetry标签 

1.xml中配置Person的bean,然后通过无参构造器反射Person对象,再通过Setter注入Car对象

   这里property中有属性ref,专门用于注入bean

<bean id="car" class="com.llf.bean.Car">
    <property name="brand" value="宝马"></property>
    <property name="price" value="2000000"></property>
    <property name="speed" value="300.00"></property>
</bean>

<bean id="person" class="com.llf.bean.Person">
    <property name="name" value="llf"></property>
    <property name="age" value="22"></property>
    <property name="car" ref="car"></property>
</bean>

 

   property不仅可以使用ref属性,还有ref标签,一样可以用于注入bean

<bean id="car" class="com.llf.bean.Car">
    <constructor-arg name="brand" >
        <value><![CDATA[<奔驰>]]></value>
    </constructor-arg>
    <constructor-arg name="price" value="300000"></constructor-arg>
    <constructor-arg name="speed" value="350"></constructor-arg>
</bean>
<bean id="person" class="com.llf.bean.Person">
    <property name="name" value="llf"></property>
    <property name="age" value="22"></property>
    <property name="car">
        <ref bean="car"></ref>
    </property>
</bean>

 

   这里可以直接在property标签中创建一个bean,这个bean的id没有意义,创造出来是单纯的给外层的bean注入使用的。

<bean id="person" class="com.llf.bean.Person">
    <property name="name" value="llf"></property>
    <property name="age" value="22"></property>
    <property name="car">
        <bean class="com.llf.bean.Car">
            <property name="brand" value="梅赛德斯奔驰"></property>
            <property name="price" value="2000000"></property>
            <property name="speed" value="300.00"></property>
        </bean>
    </property>
</bean>

 

    这里如果需要给一个属性赋值为null,在Spring中也是可以做到的,但是没啥用 。

<bean id="person" class="com.llf.bean.Person">
    <property name="name" value="llf"></property>
    <property name="age" value="22"></property>
    <property name="car"><null/></property>
</bean>

 

     这里可以在给Person注入car的同时,给Car的属性赋值,给car属性赋值,这里只能是property标签,级联操作,这里的car不能是null

<bean id="car" class="com.llf.bean.Car"></bean>
<bean id="person" class="com.llf.bean.Person">
    <property name="name" value="llf"></property>
    <property name="age" value="22"></property>
    <property name="car" ref="car"></property>
    <property name="car.brand" value="personCar"></property>
</bean>

 

SpringIOC容器-xml配置bean-反射构造器-属性注入(引用数据类型)

原文:https://www.cnblogs.com/linglongfang/p/12720611.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!