개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.25 12:30

Pool::shutdown 관련 질문

목록
  • 버전컨트롤러 25일 전 2025.06.25 12:30
  • 62
    1
제가 현재 Spring Boot 프로젝트에서 Connection Pool을 사용 중인데, Pool::shutdown() 메서드가 어떻게 동작하는지 이해가 잘 안 가는 부분이 있습니다.

Pool::shutdown() 메서드는 Connection Pool을 종료하는 메서드 인가요? 아니면 Connection Pool에 있는 Connection을 종료하는 메서드 인가요?

또한, Pool::shutdown() 메서드를 호출해야 하는 상황은 언제인가요?

혹시 예시 코드를 통해 Pool::shutdown() 메서드의 동작을 이해할 수 있는지 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  25일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,595건 / 44 페이지

검색

게시물 검색