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; }
这里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