3

私のプロジェクトには、いくつかの構成設定を注入する必要がある Web サービス クライアントの Bean があります。Spring 3.1を使用しています。現在思いついた最良のアイデアは、次のように @Value アノテーションを使用することでした。

@Service
public class MyWebServiceClient {
  private String endpointUrl;

  @Required
  @Value("${mywebserviceClient.endpointUrl}")
  public void setEndpointUrl(String endpointUrl) {
    this.endpointUrl = endpointUrl;
  }

}

ただし、プロパティ名をクラスにハードコーディングするのはあまり好きではありません。また、同じコンテキストで異なる設定を持つ複数のクライアントを持つ方法がないという問題もあります (プロパティは 1 つしかなく、これはハードコーディングされているため)。自動配線でこれを行うよりエレガントな方法はありますか、それともこれを行うために単純な古いxml構成に頼るべきですか?

4

1 に答える 1

3

これを行うには JavaConfig を使用します。

より具体的には、JavaConfig を使用して の複数のインスタンスを作成しMyWebServiceClient、構成@Valueを適切なエンドポイント プロパティ キーで構成します。

このようなもの:

@Configuration
public class MyWebServiceConfig {
    @Required
    @Value("${myWebserviceClient1.endpointUrl")
    private String webservice1Url;

    @Required
    @Value("${myWebserviceClient2.endpointUrl")
    private String webservice2Url;

    @Required
    @Value("${myWebserviceClient3.endpointUrl")
    private String webservice3Url;

    @Bean
    public MyWebServiceClient webserviceClient1() {
        MyWebServiceClient client = createWebServiceClient();
        client.setEndpointUrl(webservice1Url);
        return client;
    }

    @Bean
    public MyWebServiceClient webserviceClient2() {
        MyWebServiceClient client = createWebServiceClient();
        client.setEndpointUrl(webservice2Url);
        return client;
    }

    @Bean
    public MyWebServiceClient webserviceClient3() {
        MyWebServiceClient client = createWebServiceClient();
        client.setEndpointUrl(webservice3Url);
        return client;
    }
}

これにより、で注釈が付けられたメソッドの名前を介して、 の3 つのインスタンスが利用可能MyWebServiceClientになります。ApplicationContext@Bean

便宜上、JavaConfig に関するその他のドキュメントを次に示します。

于 2012-11-05T14:21:33.237 に答える