I use ektorp to connect to CouchDB.
The way to build an ektorp HttpClient
instance is to use builder pattern:
HttpClient httpClient = new StdHttpClient.Builder() .host("mychouchdbhost") .port(4455) .build();
I am relatively new to Spring. Please advice me on how I can configure an HttpClient
in my context to create it via the Builder
.
One way to do this is with @Configuration
. Are any other options?
Advertisement
Answer
You may try to implement FactoryBean
interface:
public class HttpFactoryBean implements FactoryBean<HttpClient>{ private String host; private int port; public HttpClient getObject() throws Exception { return new StdHttpClient.Builder() .host(host) .port(port) .build(); } public Class<? extends HttpClient> getObjectType() { return StdHttpClient.class; } public boolean isSingleton() { return true; } public void setHost(String host) { this.host = host; } public void setPort(int port) { this.port = port; }}
And add to config following bean definition:
<beans ..."> <bean name="myHttpClient" class="HttpFactoryBean"> <property name="port" value="8080"/> <property name="host" value="localhost"/> </bean> </beans>
Then you can inject this bean to another beans, it will be resolved as StdHttpClient
instance.