3

春の構成でBeanの定義があるとしましょう

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

私が本当に望んでいるのは、構成された電子メールサーバーが通常のIMAPサーバーである場合はscaningIMAPClientタイプがcom.acme.email.incoming.GenericIMAPClientであり、GMAILサーバーである場合はcom.acme.email.incoming.GmailIMAPClientです(gmail以降動作は少し異なります)GmailIMAPClientはGenericIMAPClientのサブクラスです。

スプリング構成でそれをどのように達成できますか?

電子メールサーバーの構成を含むプロパティファイルがあります。

4

2 に答える 2

1

Java構成で簡単です。

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

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

この動作はcustomでエミュレートできますFactoryBean

于 2012-11-21T21:31:48.610 に答える
1

プログラム構成を使用できます。

@Configuration
public class AppConfig {

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

}

詳細はこちら

于 2012-11-21T21:32:00.640 に答える