如何使用xml配置构造以下bean?
@Configuration
public class RestConfig {
@Bean
public ResteasyClient restClient() {
return new ResteasyClientBuilder()
.establishConnectionTimeout(connectionTimeout, TimeUnit.SECONDS)
.socketTimeout(socketTimeout, TimeUnit.SECONDS)
.build();
}
}
答案 0 :(得分:1)
您可以尝试实施FactoryBean
界面:
public class ResteasyClientFactoryBean implements FactoryBean<ResteasyClient>{
private int connectionTimeout;
private int socketTimeout;
public ResteasyClient getObject() throws Exception {
return new ResteasyClientBuilder()
.establishConnectionTimeout(connectionTimeout, TimeUnit.SECONDS)
.socketTimeout(socketTimeout, TimeUnit.SECONDS)
.build();;
}
public Class<? extends ResteasyClient> getObjectType() {
return ResteasyClient.class;
}
public boolean isSingleton() {
return true;
}
public void setConnectionTimeout(int connectionTimeout) {
this.connectionTimeout = connectionTimeout;
}
public void setSocketTimeout(int socketTimeout) {
this.socketTimeout = socketTimeout;
}
}
并在bean定义后添加配置:
<beans ...">
<bean name="myResteasyClient" class="ResteasyClientFactoryBean">
<property name="connectionTimeout" value="xxx"/>
<property name="socketTimeout" value="xxx"/>
</bean>
</beans>
然后你可以将这个bean注入另一个bean,它将被解析为ResteasyClient
实例。