
	                	                 
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