Spring中的抽象bean有点不同于抽象类。事实上,Spring中的抽象bean甚至不需要映射到任何类。以此为例:
和类:
public class FooDao {
private DataSource dataSource;
private SomeHelper someHelper;
private FooHelper fooHelper;
//setters
}
public class BarDao {
private DataSource dataSource;
private SomeHelper someHelper;
private BarHelper barHelper;
//setters
}
注意,FooDao和BarDao没有任何共同的父类(抽象或不是)基类。父抽象bean定义仅用于对公共属性进行分组,以避免在XML中重复。
另一方面,引入FooDao和BarDao继承的抽象Dao类将是一个好主意:
public abstract Dao {
protected DataSource dataSource;
protected SomeHelper someHelper;
//setters
}
public class FooDao extends Dao {
private FooHelper fooHelper;
//setters
}
public class BarDao extends Dao {
private BarHelper barHelper;
//setters
}
但是dao bean不必定义一个类。当多个具体的bean具有相同的依赖性时,将抽象bean视为一种减少XML中重复的方法。