我想创建一个创建 Client 实例的 bean(来自 Elasticsearch)。但是我之前没有在 Spring 中配置过工厂 bean,所以我想知道我是否在阅读后得到了它。因为只有在我认为我必须使用 factory-bean 属性而不是静态版本时才应该打开和关闭连接,因为我想close
在应用程序关闭时调用该方法。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();
}
}