微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring boot 命令行应用程序不会以 neo4j 驱动程序终止

如何解决Spring boot 命令行应用程序不会以 neo4j 驱动程序终止

我已将 Neo4j 连接添加一个简单的 Spring Boot 命令行应用程序 - 它实现了 CommandLineRunner

我几乎遵循了 Neo4j driver manual 中的示例,但我的应用程序在 main() 完成后并未终止。
与这些来源的唯一偏差是 driver.close() 方法不是在 main()调用,而是在 @PreDestroy 注释方法调用

@Service
public class DatabaseGraphService {
    
    private volatile Driver driver;
    
    private final Logger LOG;
    
    public DatabaseGraphService() {
        LOG = LogManager.getLogger(getClass());
    }

    @postconstruct
    private void initialize() throws Exception {
        driver = GraphDatabase.driver("bolt://localhost:7687",AuthTokens.basic("neo4j","neo4j"));
    }
    
    @PreDestroy
    public void close() throws Exception {
        LOG.info("Shutting down Neo4j driver...");
        driver.close();
    }
    
    // ...
    
}

主类:

@SpringBootApplication(scanBasePackages={ "it" })
public class SpringBootConsoleApplication implements CommandLineRunner {

    @Autowired
    private DatabaseGraphService graphService;
    
    private static Logger LOG = LoggerFactory
      .getLogger(SpringBootConsoleApplication.class);

    public static void main(String[] args) {
        LOG.info("STARTING THE APPLICATION");
        
        SpringApplication.run(SpringBootConsoleApplication.class,args);
        LOG.info("APPLICATION FINISHED");
    }
 
    @Override
    public void run(String... args) {
        LOG.info("EXECUTING : command line runner");
    }
    
}

我在 Sprint 工具套件(基于 Eclipse 的 IDE)中运行它,这是它记录的内容

i.c.c.e.SpringBootConsoleApplication     : APPLICATION FINISHED

但没有别的,进程保持活跃;当我按下停止按钮时:

inMXBeanRegistrar$SpringApplicationAdmin : Application shutdown requested.
i.c.c.services.DatabaseGraphService      : Shutting down Neo4j driver...
com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
[...]

如果我在不执行任何查询的情况下运行程序,则该进程定期存在。只要我执行查询 - 无论我是使用所有结果还是对 Result 对象不执行任何操作 - 它都会保持活动状态。

我做错了吗?或者这可能是预期的行为,因为当 main() 完成时,只是它的线程终止?

虽然,在同一个应用程序中,我连接到一个 Postgresql 实例,也在那里进行查询,但应用程序在添加 Neo4j 连接之前正确终止。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。