Spring中的抽象bean与抽象类有所不同。实际上,Spring中的抽象bean甚至不必映射到任何类。以此为例:
<bean id="dao" abstract="true"> <property name="dataSource" ref="dataSource"/> <property name="someHelper" ref="someHelper"/></bean><bean id="fooDao" parent="dao"> <property name="fooHelper" ref="fooHelper"/></bean><bean id="barDao" parent="dao"> <property name="barHelper" ref="barHelper"/></bean>
And classes:
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中重复。
另一方面,引入
Dao既可以继承
FooDao又可以
BarDao继承的抽象类是一个好主意:
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}
但是
daobean 仍然不需要定义一个类。当多个具体bean具有相同的依赖关系时,将抽象bean视为减少XML重复的一种方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)