在Spring中使用工厂类

时间:2013-03-30 11:30:55

标签: java spring java-ee

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

1 个答案:

答案 0 :(得分:0)

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