发出关闭数据源连接的问题

Issue closing data source connection

我有一个已设置的数据源,然后被第三方软件用来执行 sql。在 sql 是 运行 之后,我有另一个执行并关闭连接的 bean。

@Bean
public DataSource datasource() {
    HikariConfig myconfig = new HikariConfig();
    ...
    return new HikariDataSource(myconfig);
}

@Bean
@DependsOn("sqlproject")
public void closeConnection() throws SQLException {
    Connection c = datasource().getConnection();
    try {
        c.close();
    } 
    finally {
        System.out.println(c.isClosed());
    }
}

但是,我显然仍然可以使用该数据源连接到特定数据进行本地调用。我不应该调用 datasource() 因为这会创建一个新实例吗?我做错了什么?

你是对的,当你从配置 class 调用 datasource 时,会创建新实例,因为 .

此外,即使您正确使用了这个 AOP,它也不会关闭 DataSource,因为您正在创建新连接(通过 getConnection() 然后关闭它。

如果要关闭HikariDataSource,则需要调用HikariDataSource#close

此外,您的 void 方法不需要 @Bean 注释,因为它没有任何意义。