2012-11-21 3 views
3

은의 우리가 봄 구성에서 bean 정의를 가지고 있다고 가정 해 봅시다봄 구성

<bean id="scanningIMAPClient" class="com.acme.email.incoming.ScanningIMAPClient" /> 

내가 정말 원하는 것은 구성된 이메일 서버가 정상인지 형 com.acme.email.incoming.GenericIMAPClient 될 수있는 scanningIMAPClient입니다 IMAP 서버 및 com.acme.email.incoming.GmailIMAPClient는 GMAIL 서버 인 경우 (gmail은 약간 다른 방식으로 동작하기 때문에) GmailIMAPClient는 GenericIMAPClient의 하위 클래스입니다.

스프링 구성에서 어떻게 수행 할 수 있습니까?

전자 메일 서버의 구성을 포함하는 속성 파일이 있습니다.

답변

1

은 자바 구성 간단합니다

@Value("${serverAddress}") 
private String serverAddress; 

@Bean 
public GenericIMAPClient scanningIMAPClient() { 
    if(serverAddress.equals("gmail.com")) 
     return new GmailIMAPClient(); 
    else 
     return new GenericIMAPClient(); 
} 

당신은 사용자 정의 FactoryBean으로이 동작을 에뮬레이트 할 수 있습니다.

1

당신의 프로그램에 구성을 사용할 수 있습니다

@Configuration 
public class AppConfig { 

    @Bean(name="scanningIMAPClient") 
    public GenericIMAPClient helloWorld() { 
     ...check config and return desired type 
    } 

} 

더 많은 정보 here합니다.