0

我想创建一个创建 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();
    }
}
4

1 回答 1

0

它看起来足够接近。我建议通过执行进行验证。也许写一段代码来测试它。这比找人为你做这件事要快。

于 2013-03-30T11:37:52.623 回答