我在我的应用程序中使用第三方库来完成某项任务。他们提供了一个我使用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();
}
}
有人可以确认我是否做得对,或者是否有可用的最佳做法选项!?