在我的spring托管组件中自动连接第三方库

时间:2016-05-12 11:03:44

标签: java spring autowired

我在我的应用程序中使用第三方库来完成某项任务。他们提供了一个我使用maven在我的项目中添加的包装器。为了使用这个包装器,我们必须为其客户端类提供一个访问密钥,以便使用它的功能。例如:

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

我想要的是删除上面的代码(因为它是一种Singleton,应该在应用程序启动时在spring上下文中注册)并做一些事情,这样我就可以自动装载WeatherApiClient而且我们是很高兴。 (包装器不使用弹簧FYI)。以下是我在春季上下文中所做的,我注册了两个bean,并将访问键设置为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();
     }


}

有人可以确认我是否做得对,或者是否有可用的最佳做法选项!?

0 个答案:

没有答案