복붙노트

[SPRING] 봄에 abstract = "true"가 의미하는 것은 무엇입니까?

SPRING

봄에 abstract = "true"가 의미하는 것은 무엇입니까?

Java에서는 추상 클래스를 인스턴스화 할 수 없습니다. 그러나 봄은 "="사실로 콩 만들기와 같은 것을 말한다. 추상 클래스의 상태가 그 자식 클래스 인스턴스에 의해서만 초기화된다면 (나는 맞을 것 같다), 추상 클래스에 정의 된 메소드 내에서 그 속성을 사용할 필요가 있다면 ... 가능성이있다. 그것? 다음과 같은 코드 세트가 있습니다.

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. 
        } 
    }
}

해결법

  1. ==============================

    1.Spring의 추상 Bean은 추상 클래스와 다소 다릅니다. 사실 Spring의 추상 빈은 어떤 클래스에도 맵핑 될 필요가 없다. 예를 들면 다음과 같습니다.

    Spring의 추상 Bean은 추상 클래스와 다소 다릅니다. 사실 Spring의 추상 빈은 어떤 클래스에도 맵핑 될 필요가 없다. 예를 들면 다음과 같습니다.

    <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에는 부모 클래스 (추상 클래스 또는 비 기본 클래스)가 공통적으로 존재하지 않습니다. 부모 추상 bean 정의는 공통 속성을 그룹화하는 데에만 사용되므로 XML에서 반복을 피할 수 있습니다.

    반면에 FooDao와 BarDao가 상속받은 추상 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
    }
    

    하지만 여전히 콩은 클래스를 정의 할 필요가 없습니다. 여러 가지 구체적인 빈이 동일한 종속성을 가질 때 XML에서 중복을 줄이는 방법으로 추상 빈을 처리하십시오.

  2. ==============================

    2.사실, 추상 부모 콩은 클래스 속성을 정의하는 데 필요하지 않습니다, 당신은 공유하는 공통 속성이 필요할 수 있습니다.

    사실, 추상 부모 콩은 클래스 속성을 정의하는 데 필요하지 않습니다, 당신은 공유하는 공통 속성이 필요할 수 있습니다.

    이 튜토리얼에 따르면

  3. from https://stackoverflow.com/questions/9397532/what-is-meant-by-abstract-true-in-spring by cc-by-sa and MIT license