我想创建一个创建Client实例的bean(来自Elasticsearch)。但是我之前没有在Spring中配置工厂bean,所以我想知道我是否在阅读之后就把它弄好了。由于我认为必须使用factory-bean属性而不是静态版本才能打开和关闭连接,因为我想在应用程序关闭时调用close
方法。当我使用class属性时,我没有设法调用close
方法。
这是正确的用法吗?我只想要一个工厂和一个连接,并且我想在客户端关闭时调用close。
<bean id="clientFactory" class="my.company.ClientFactory" destroy-method="close" />
<bean id="searchClient" factory-bean="clientFactory" factory-method="getClient" />
工厂:
public class ClientFactory {
private Client client;
public Client getClient() {
if (client != null) {
return client;
}
Client transportClient = new TransportClient().addTransportAddress(new InetSocketTransportAddress("localhost", 9300));
client = transportClient;
return client;
}
public void close() {
client.close();
}
}
答案 0 :(得分:0)
看起来足够接近。我建议执行验证。也许写一段代码来测试它。这比让别人为你做这件事要快。