spring什么意思是abstract =“true”?

抽象类不能在java中实例化。 但是spring用abstract="true"表示豆的创造。 如果一个抽象类的状态只是由它的子类实例初始化(我想我是对的),那么如果我需要在抽象类中定义的方法内使用该属性,那么…是否有可能它? 我有一套代码如下:

 class abstract A { private Something somethingObj; // getters and setters are present. public void logSomething() { try{ //some code which throws exception } catch(Exception e){ somethingObj.logIt(e);// I have some logic inlogIt method. } } } 

Spring中的抽象bean与抽象类有所不同。 事实上,Spring中的抽象bean甚至不必映射到任何类。 以此为例:

 <bean id="dao" abstract="true"> <property name="dataSource" ref="dataSource"/> <property name="someHelper" ref="someHelper"/> </bean> <bean id="fooDao" class="FooDao" parent="dao"> <property name="fooHelper" ref="fooHelper"/> </bean> <bean id="barDao" class="BarDao" parent="dao"> <property name="barHelper" ref="barHelper"/> </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 } 

请注意, FooDaoBarDao没有任何父类(抽象或非抽象)基类的共同点。 父级抽象bean定义仅用于对常用属性进行分组 ,所以避免了XML中的重复。

另一方面,引入FooDaoBarDaoinheritance的抽象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 } 

但是豆豆还没有定义一个类。 当几个具体bean具有相同的依赖关系时,将抽象bean视为一种减lessXML重复的方法。

实际上,抽象的父bean没有必要定义类属性,你可能只需要一个公共属性来共享。

根据这个教程

父bean不能被自己实例化,因为它是不完整的,而且它也被显式地标记为抽象的。 当定义像这样抽象时,它只能用作一个纯粹的模板bean定义,作为子定义的父定义。