spring级联属性赋值的两种方式解析
程序员文章站
2023-11-17 21:31:10
这篇文章主要介绍了spring级联属性赋值的两种方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
car.java...
这篇文章主要介绍了spring级联属性赋值的两种方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
car.java
package com.gong.spring.beans; public class car { private string name; public string getname() { return name; } public void setname(string name) { this.name = name; } @override public string tostring() { return "car [name=" + name + "]"; } }
student.java
package com.gong.spring.beans; public class student { private string name; private int age; private double score; private car car; public string getname() { return name; } public void setname(string name) { this.name = name; } public int getage() { return age; } public void setage(int age) { this.age = age; } public double getscore() { return score; } public void setscore(double score) { this.score = score; } public car getcar() { return car; } public void setcar(car car) { this.car = car; } @override public string tostring() { return "student [name=" + name + ", age=" + age + ", score=" + score + ", car=" + car + "]"; } }
一、利用setter方法进行赋值
在bean中需要赋值的属性必须要有setter方法,同时bean中必须还要有一个无参的构造方法。如若不显示声明,则默认会有一个。
applicationcontext.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="car" class="com.gong.spring.beans.car"></bean> <bean id="student" class="com.gong.spring.beans.student"> <property name="name" value="tom"></property> <property name="age" value="12"></property> <property name="score" value="98.00"></property> <property name="car" ref="car"></property> <property name="car.name" value="baoma"></property> </bean> </beans>
关键就是标红的两个代码:先进行关联,然后进行级联赋值。
二、利用构造方法进行级联赋值
此时,要在person中加一个有参构造方法:
public student(string name, int age, double score, car car) { super(); this.name = name; this.age = age; this.score = score; this.car = car; }
在car中加一个无参构造方法:
public car() { }
同时,对于这种方法,我们删除掉person中name、age、score属性的getter和setter方法,保留car属性的getter和setter方法,程序仍然是可行的。
在applicationcontext.xml中:
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="car" class="com.gong.spring.beans.car"></bean> <bean id="student" class="com.gong.spring.beans.student"> <constructor-arg value="tom"></constructor-arg> <constructor-arg value="12"></constructor-arg> <constructor-arg value="98.00"></constructor-arg> <constructor-arg ref="car"></constructor-arg> <property name="car.name" value="baoma"></property> </bean> </beans>
总结:
1.利用setter方法进行级联属性赋值需要:无参构造方法、setter方法。
2.利用构造器进行级联属性赋值需要:有参构造方法。
3.为级联属性赋值,属性先要初始化之后才可以为级联属性赋值,否则会有异常,即:
<property name="car" ref="car"></property> <constructor-arg ref="car"></constructor-arg>
而在struct2中则不用,它会自动进行初始化。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。