Spring 공략 학습 노트 (13) --- Bean 설정 계승

5698 단어 spring
지식
      Spring IoC 용기 에 Bean 을 설정 할 때 속성 과 < bean > 요소 의 속성 등 일부 공용 설정 을 공유 하 는 Bean 을 하나 이상 가 질 수 있 습 니 다.너 는 항상 여러 빈 을 위해 이 설정 들 을 반복 해 야 한다.
      Spring 은 공용 Bean 설정 을 추출 하여 부모 Bean 을 구성 할 수 있 도록 합 니 다.아버지 빈 에 게 서 물 려 받 은 빈 을 자 빈 이 라 고 부른다.하위 Bean 은 부모 Bean 에서 Bean 설정 을 계승 합 니 다. Bean 속성 과 < bean > 요소 의 속성 을 포함 하여 중복 설정 을 피 합 니 다.서브 빈 은 필요 할 때 계승 설정 을 덮어 쓸 수 있 습 니 다.
      부모 빈 은 설정 템 플 릿 으로 도 사용 할 수 있 고 빈 의 인 스 턴 스 로 도 사용 할 수 있 습 니 다.부모 빈 이 템 플 릿 으로 만 검색 할 수 없 기 를 원한 다 면 abstract 를 true 로 설정 하고 Spring 에 이 빈 을 예화 하지 말 라 고 요구 해 야 합 니 다.
      부모 < bean > 요소 에서 정의 하 는 모든 속성 이 계승 되 는 것 은 아 닙 니 다.구체 적 으로 는 Spring 문서 의 Bean 계승 에 관 한 내용 을 참조 할 수 있 습 니 다.
2. 코드 예시:
        Bean 프로필:
<bean id="sequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" >
   <property name="initial" value="100000" />
   <property name="suffix" value="A" />
   <property name="prefixGenerator" ref="datePrefixGenerator" />
</bean>
		
<bean id="sequenceGenerator1" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" >
   <property name="initial" value="100000" />
   <property name="suffix" value="A" />
   <property name="prefixGenerator" ref="datePrefixGenerator" />
</bean>
		
<bean id="datePrefixGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.DatePrefixGenerator">
   <property name="pattern" value="yyyyMMdd" />
</bean> 

       같은 속성 이 중복 되 는 것 을 피하 기 위해 서 는 이 속성 집합 으로 기본 시퀀스 생 성 기 를 설명 할 수 있 습 니 다.그 다음 에 두 개의 시퀀스 생 성 기 는 이 기본 시퀀스 생 성기 에서 계승 할 수 있 습 니 다. 그러면 그들 은 자동 으로 어떤 속성 집합 을 가지 고 있 습 니까?하위 빈 과 부모 빈 의 클 라 스 속성 이 같다 면 지정 할 필요 가 없습니다.
 
 
<bean id="baseSequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" >
    <property name="initial" value="100000" />
    <property name="suffix" value="A" />
    <property name="prefixGenerator" ref="datePrefixGenerator" />
</bean>
		
<bean id="sequenceGenerator" parent="baseSequenceGenerator" />
			
<bean id="sequenceGenerator1" parent="baseSequenceGenerator" />

       계승 속성 은 하위 빈 이 덮어 쓸 수 있 습 니 다.예 를 들 어 초기 값 이 다른 하위 시퀀스 생 성 기 를 추가 할 수 있 습 니 다.
 
 
<bean id="baseSequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" >
   <property name="initial" value="100000" />
   <property name="suffix" value="A" />
   <property name="prefixGenerator" ref="datePrefixGenerator" />
</bean>
		
<bean id="sequenceGenerator2" parent="baseSequenceGenerator" >
   <property name="initial" value="200000"></property>
</bean>

       현재 기본 시퀀스 생 성기 빈 은 빈 인 스 턴 스 로 복원 할 수 있 습 니 다.템 플 릿 으로 만 사용 하려 면 abstract 속성 을 true 로 설정 해 야 합 니 다. Spring 은 이 Bean 을 예화 하지 않 습 니 다. 그렇지 않 으 면 이상 을 던 집 니 다.
<bean id="baseSequenceGenerator" abstract="true" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" >
   <property name="initial" value="100000" />
   <property name="suffix" value="A" />
   <property name="prefixGenerator" ref="datePrefixGenerator" />
</bean>

       너 도 아버지 빈 의 종 류 를 무시 하고 아들 빈 에 게 자신의 종 류 를 지정 하 게 할 수 있다. 특히 아버지 빈 과 아들 빈 이 같은 계층 구조 에 있 지 않 지만 같은 이름 의 속성 을 공유 할 때.이 경우 부모 빈 의 abstract 속성 은 true 로 설정 해 야 합 니 다. 부모 빈 은 예화 할 수 없 기 때 문 입 니 다.예 를 들 어 initial 속성 이 있 는 ReverseGenerator 클래스 를 추가 합 니 다.
 
 
public class ReverseGenerator {

    private int initial;

    public void setInitial(int initial) {
        this.initial = initial;
    }
}

       현재 Sequence Generator 와 ReverseGenerator 는 같은 기본 클래스 를 확장 하지 않 습 니 다. 즉, 그들 은 같은 계층 기구 에 있 지 않 지만 같은 이름 의 속성 을 가지 고 있 습 니 다: initial.공공 initial 속성 을 추출 하기 위해 서 는 class 속성 을 정의 하지 않 은 부모 Bean - --- - baseGenerator 가 필요 합 니 다.
 
 
<bean id="baseGenerator" abstract="true">
   <property name="initial" value="100000" />
</bean>
		
<bean id="baseSequenceGenerator" abstract="true" parent="baseGenerator" >
   <property name="suffix" value="A" />
   <property name="prefixGenerator" ref="datePrefixGenerator" />
</bean>
		
<bean id="reverseGenerator" parent="baseGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.ReverseGenerator" />
		
<bean id="sequenceGenerator" parent="baseSequenceGenerator" />
			
<bean id="sequenceGenerator1" parent="baseSequenceGenerator" />
		
<bean id="sequenceGenerator2" parent="baseSequenceGenerator" />

 

좋은 웹페이지 즐겨찾기