ITEEDU

Spring属性的继承-abstract和parent的应用

Spring中可以将bean的公共属性提出来共用,就像java中的继承一样。主要用到abstract和parent两个关键字。

   <bean id="beanAbstract"  abstract="true">
   		<property name="id" value="1000"/>
   		<property name="name" value="Jack"/>
   </bean>         

   <bean id="bean3" class="com.bjsxt.spring.Bean3" parent="beanAbstract">
   		<property name="name" value="Tom"/>
   		<property name="password" value="123"/>
   </bean>        

   <bean id="bean4" class="com.bjsxt.spring.Bean4" parent="beanAbstract"/>
  1. abstract:bean配置是否可以实例化。
  2. parent:继承指定bean的属性。

abstract不是必须的,因为beanAbstract没有设置class属性,所以其不可实例化,就设置abstract防止其实例化。设置了class后就不用设置abstract了,因为设置了class就可以被实例化了。如下面。

   <bean id="beanAbstract" class="com.bjsxt.spring.Bean4">
   		<property name="id" value="1000"/>
   		<property name="name" value="Jack"/>
   </bean>

bean会继承parent指定的父bean中的属性,同名的会覆盖父bean中的属性。

下面是相关bean类:

public class Bean2 {

	private Bean3 bean3;

	private Bean4 bean4;

	private Bean5 bean5;

	public Bean3 getBean3() {
		return bean3;
	}

	public void setBean3(Bean3 bean3) {
		this.bean3 = bean3;
	}

	public Bean4 getBean4() {
		return bean4;
	}

	public void setBean4(Bean4 bean4) {
		this.bean4 = bean4;
	}

	public Bean5 getBean5() {
		return bean5;
	}

	public void setBean5(Bean5 bean5) {
		this.bean5 = bean5;
	}
}

 

public class Bean3 {

	private int id;

	private String name;

	private String password;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

 

public class Bean4 {

	private int id;

	private String name;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

 

public class Bean5 {

	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}