봄에 추상적="true"가 의미하는 바는 무엇입니까?
자바에서는 추상 클래스를 인스턴스화할 수 없습니다.하지만 봄은 콩 만들기 같은 것을 말합니다.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.
}
}
}
봄의 추상콩은 추상적인 수업과는 다소 다릅니다.사실, 봄의 추상콩은 어떤 클래스와도 매핑될 필요가 없습니다.예를 들어 다음과 같습니다.
<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
}
참고:FooDao
그리고.BarDao
공통적으로 부모(abstract 또는 없음) 기본 클래스가 없습니다.상위 추상 빈 정의는 공통 속성을 그룹화하는 데만 사용되므로 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
콩은 클래스를 정의할 필요가 없습니다.추상콩을 여러 콘크리트 콩이 동일한 의존 관계를 가질 때 XML에서 중복을 줄이기 위한 방법으로 취급합니다.
사실 추상 부모 빈은 클래스 속성을 정의하는 데 필요한 것이 아니라 공유를 위한 공통 속성이 필요할 수도 있습니다.
이 자습서에 따르면
부모콩은 불완전하기 때문에 스스로 인스턴스화할 수 없고, 추상적이라고 명시적으로 표시되기도 합니다.이와 같이 정의가 추상적인 경우 하위 정의의 상위 정의 역할을 하는 순수 템플릿 빈 정의로만 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9397532/what-is-meant-by-abstract-true-in-spring
'itsource' 카테고리의 다른 글
jQuery divas 특정 인덱스로 삽입 (0) | 2023.09.24 |
---|---|
XML에서 요소와 노드의 차이점은 무엇입니까? (0) | 2023.09.24 |
C에서 64비트 변수 선언 (0) | 2023.09.24 |
클릭 시 다중 선택 상자의 모든 옵션을 선택하려면 어떻게 해야 합니까? (0) | 2023.09.24 |
다른 파워셸 스크립트에서 변수 로드 (0) | 2023.09.24 |