在Spring 3中注册关闭钩子的正确方法是什么?

时间:2013-01-16 06:05:12

标签: spring neo4j

关于how to embed Neo4j in a java application的教程建议注册一个关闭钩子,如下所示:

Runtime.getRuntime().addShutdownHook( new Thread() {
    // do shutdown work here
});

我想知道放置此代码的最佳位置 - 或者实际上在Spring启动时需要运行一次的任何代码。它只是registering a bean with an init method的情况并将代码放入其中吗?

我有兴趣知道这一点,更具体地说,在Spring应用程序中使用嵌入式Neo4j时,其他人如何注册了一个关闭钩子。

2 个答案:

答案 0 :(得分:8)

只需使用正确的destroy-method

为graphdatabase-service声明您的bean
<bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
        destroy-method="shutdown">
    <constructor-arg index="0" value="data/testdb.db"/>
    <constructor-arg index="1">
        <map>
            <entry key="allow_store_upgrade" value="true"/>
        </map>
    </constructor-arg>
</bean>

答案 1 :(得分:-3)

使用1.8.1 Neo4j和SDN 2.1 - 以上内容对我的Eclipse / Jetty环境不起作用。

几乎每次我使用Eclipse“服务器”控件启动/停止时,我都会在启动时看到:

信息:在日志中检测到非干净关闭...

注意:虽然我没有设置“allow-store-upgrade”属性。我认为这与干净关机无关?