发出关闭数据源连接的问题
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
注释,因为它没有任何意义。
我有一个已设置的数据源,然后被第三方软件用来执行 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
注释,因为它没有任何意义。