itsource

봄에 추상적="true"가 의미하는 바는 무엇입니까?

mycopycode 2023. 9. 24. 12:50
반응형

봄에 추상적="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

반응형