abstract =“true”是什么意思在春天? [英] What is meant by abstract="true" in spring?
问题描述
abstract =true
这样的bean创建。如果抽象类的状态仅由其子类实例初始化(我猜我是对的),那么如果我需要在抽象类中定义的方法中使用该属性,那么...有可能它?我有一组代码如下: class abstract A {
private Something somethingObj;
// getter和setter存在。
public void logSomething(){
try {
//一些引发异常的代码
}
catch(异常e){
somethingObj.logIt(e); //我有一些逻辑inlogIt方法。
}
}
}
Spring中的抽象bean与抽象类有些不同。实际上,Spring中的抽象bean甚至不必映射到任何类。以此为例:
< bean id =daoabstract =true>
< property name =dataSourceref =dataSource/>
< property name =someHelperref =someHelper/>
< / bean>
< bean id =fooDaoclass =FooDaoparent =dao>
< property name =fooHelperref =fooHelper/>
< / bean>
< bean id =barDaoclass =BarDaoparent =dao>
< property name =barHelperref =barHelper/>
< / bean>
和课程:
public class FooDao {
private DataSource dataSource;
private SomeHelper someHelper;
私人FooHelper fooHelper;
// setters
}
public class BarDao {
private DataSource dataSource;
private SomeHelper someHelper;
私人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
}
但仍然 dao
bean不必定义一个类。在几个具体的bean具有相同的依赖关系时,将抽象bean视为减少XML中的重复的一种方式。
Abstract classes cannot be instantiated in java. But spring says something like bean creation with abstract="true"
. If a state of an abstract class is initialised only by its child class instance(i guess i am right), then if i need to use that attribute inside the method which is defined in the abstract class then... is there a possibility for it? I have a set of code as follows:
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.
}
}
}
Abstract beans in Spring are somewhat different from abstract classes. In fact, abstract bean in Spring doesn't even have to be mapped to any class. Take this as an example:
<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>
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
}
Note that FooDao
and BarDao
do not have any parent (abstract or not) base class in common. Parent abstract bean definition is used only to group common properties, so you avoid repetition in XML.
On the other hand introducing abstract Dao
class that both FooDao
and BarDao
inherit from would be a good idea:
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
}
But still dao
bean doesn't have to define a class. Treat abstract beans as a way to reduce duplication in XML when several concrete beans have same dependencies.
这篇关于abstract =“true”是什么意思在春天?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!