One.0
27
2017-01-11 22:10:02.0
2
136

destroy-method="close" 질문드립니다.


안녕하세요. dbcp 설정 중에 궁금증이 생겨 개발자 선배님들께 질문 글 남깁니다.

현재 맡은 프로젝트에서 아래와 같은 dbcp 설정값 변경 중 destroy-method="close" 이 사용하는 이유가 무엇인지 찾지 못해새서 질문 남깁니다.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  

    destroy-method="close"

    p:driverClassName="${db.driverClassName }"

    p:url="${db.url}"

    p:username="${db.username}"

    p:password="${db.password}"

    p:maxActive="${db.maxActive}"

    p:maxIdle="${db.maxIdle}"

    p:maxWait="${db.maxWait}"

/>

구글링 결과 빈 객체의 스코프가 끝날때 org.apache.commons.dbcp.BasicDataSource에 구현된 close 메서드를 호출하는걸 의미하는 걸로 알고 있습니다. 해당 메소드를 디컴파일하여 확인보았지만 exception처리 및 커넥션 제거 소스외에 별 다른것이 없는거 같습니다.


그래서 몇가지 테스트를 진행해 보았습니다.

1. 톰캣 정상 종료후에도  destroy-method="close" 을 설정 안했을 경우엔 connection 유지??

    -> connection close 확인

2. 톰캣 강제종료후일 경우 테스트

  -> destroy-method="close" 선언 또는 미선언시에도 connection close 확인


아직 초년생 개발자로서 많이 부족하지만 답글 남겨주시면 감사하겠습니다.~~!

0
0
  • 답변 2

  • inyl
    773
    2017-01-12 09:32:52.0 작성 2017-01-12 09:40:06.0 수정됨

    spring에서 instance를 파기할때 실행하는 method이름을 적는건데요

    default가 close일겁니다.

    그래서 그 구문을 지워도 동일하게 동작하는 것입니다.

    만일 close()가 아니라 clean() method로 파기해야하면


    destroy-method="clean" 으로 선언해야 합니다.


    http://docs.spring.io/spring-framework/docs/4.0.4.RELEASE/javadoc-api/org/springframework/context/annotation/Bean.html


    해당 문서의 destoryMethod를 참조하세요

    1
  • One.0
    27
    2017-01-12 11:44:43.0

    안녕하세요.

    첨부주신 링크확인해 보니 말씀해 주신 내용 확인했습니다.

    스프링 버전에 따라 디폴트 설정 유무는 확인해 봐야하지만 알려주셔서 큰도움이 되었습니다.

    답변 감사합니다.


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.