BeanPostProcessor#postProcessAfterInitialization
를 사용하여 DataSource Bean이 모두 생성 완료 된 뒤에 Bean의 실제 구현체 클래스 여부(예를들어 DBCP의 경의 BasicDataSource
)를 확인하여 dataSource.getConnection()
을 맺고 끊어주면 Spring Application이 다 뜨기 전에 미리 최소한의 커넥션이 맺어진 상태의 DataSource가 되어 서비스 오픈 직후 갑작스런 트래픽에 대응할 수 있게 된다.Map<String, DataSource> dataSources
로 모든 DataSource
를 Injection 받은 Bean에서 @PostConstruct
로 초기화 할 수도 있다.maxAge
)를 항상 설정한다.maxActive
와 maxIdle
을 동일하게 설정해야 할 것 같음. 안 그러면 부하가 몰렸다가 빠질 때 maxIdle
이 작을 경우 커넥션을 일괄 반환하는 일이 생길 것으로 예상됨. pool별로 확인 필요.Connection.isValid(int timeout)
에서 사용한다.