
Pool::shutdown() 메서드는 Connection Pool 자체를 종료하는 것이 아니라, Connection Pool에 있는 Connection을 종료하는 메서드입니다.
Connection Pool은 Connection을 생성하고 관리하는 역할을 하며, Pool::shutdown() 메서드를 호출하면 Connection Pool에 있는 모든 Connection이 종료됩니다.
Pool::shutdown() 메서드를 호출해야 하는 상황은 다음과 같습니다.
- 애플리케이션이 종료될 때: 애플리케이션이 종료될 때 Connection Pool도 종료되어야 하므로, Pool::shutdown() 메서드를 호출해야 합니다.
- Connection Pool이 오류를 발생할 때: Connection Pool이 오류를 발생할 때 Connection Pool을 종료하여 오류를 해결할 수 있습니다.
- Connection Pool이 필요하지 않을 때: Connection Pool이 필요하지 않을 때 Connection Pool을 종료하여 리소스를 절약할 수 있습니다.
Pool::shutdown() 메서드의 동작을 이해할 수 있는 예시 코드는 다음과 같습니다.
#hostingforum.kr
java
@Configuration
public class DatabaseConfig {
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create()
.driverClassName("com.mysql.cj.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/test")
.username("root")
.password("password")
.build();
}
@Bean
public HikariDataSource hikariDataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
return dataSource;
}
}
#hostingforum.kr
java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public DataSource dataSource() {
return hikariDataSource();
}
@PreDestroy
public void shutdown() {
HikariDataSource dataSource = (HikariDataSource) dataSource();
dataSource.close();
}
}
위 예시 코드에서, `@PreDestroy` 어노테이션을 사용하여 `shutdown()` 메서드를 호출하여 Connection Pool을 종료합니다.
2025-06-25 12:31