2016-05-12 4 views
0

私のアプリケーションでサードパーティのライブラリを使用しています。彼らは私のプロジェクトでmavenを使って追加したラッパーを提供しました。このラッパーを使用するには、クライアントクラスにアクセスキーを与えてその機能を使用する必要があります。例の場合:私が欲しいものスプリング管理対象コンポーネントにサードパーティのライブラリを自動配線する

final WeatherApiService was = new WeatherApiServiceImpl(accessKey); 
final WeatherApiClient weatherApiClient = new WeatherApiClient(was); 

は、私はちょうどWeatherApiClientをautowireことができるように(それはシングルトンのようなものだとアプリケーションが起動しているときに春のコンテキストに登録されなければならないので)上記のコードを削除して、何かをすることです私たちは行くのが良いです。 (ラッパーはFYIを使用していません)。以下は、私が行ったことは、私の春のコンテキストでは、私は2つの豆を登録し、アクセスキーを置くweb.xmlです。

春-のcontext.xml

<bean id="was" class="my.librarypath.WeatherApiService "> 
    <constructor-arg type="java.lang.String" value="${accessKeyFromWebXml}"/> 
</bean> 


<bean id="weatherApiClient" class="my.librarypath.WeatherApiClient"> 
    <constructor-arg type="my.librarypath.WeatherApiService" value="was"/> 
</bean> 

私は右のそれをやっている場合

@Component("myComponent") 
public class MyComponent IComponent { 

    @Resource(name = "weatherApiClient") // <--- getting Error here i.e: Couldn't aurtowire, bean should be of String type 
    private String weatherApiClient; 


    public void myFunction() { 
      weatherApiClient.getWeather(); 
    } 


} 

サードパーティのライブラリを使用します私のコンポーネントは、誰かが確認することができます利用可能なベストプラクティスオプションがありますか?

<bean id="weatherApiClient" class="my.librarypath.WeatherApiClient"> 
    <constructor-arg type="my.librarypath.WeatherApiService" value="was"/> 
                  // ^---- should be ref 
</bean> 

第二に、私はString代わりのWeatherApiClientを使用していました:

+1

とあなたのタイプが間違っています。だからあなたは正しいことをしていません。 –

+0

エラーに加えてD.Deinum:あなたは新しいWeatherApiServiceImpl(accessKey)を使用します。 を使ってそれを作成しようとしましたか? WeatherApiServiceがインタフェースである場合、これは動作しません。あなたのコードのようにimplクラスを使うべきです。 – Starbax

+1

はい@starbax正しいです。ご協力いただきありがとうございます。それはMによって言われるように修正されました。それは主要な問題でした。 – ManinGreen

答えて

0

THERは二つの問題でした。 MY BAD:それは代わりに `STRING`のWeatherApiClient``べきであるとして、あなたのコンポーネントの値を= `使う` refが= ` "だった" "た" の代わりに、`の/

@Resource(name = "weatherApiClient") 
    private String weatherApiClient; 
      // ^---- this one should have to be WeatherApiClient 
関連する問題