यदि आप इस तरह की संपत्ति फ़ाइल से आरडीएस कनेक्शन को परिभाषित करने के लिए ऑटो-कॉन्फ़िगरेशन का उपयोग कर रहे हैं:
cloud.aws.rds.testdb.password=testdbpwd
cloud.aws.rds.testdb.username=testdbuser
cloud.aws.rds.testdb.databaseName=testdb
स्प्रिंग बूट डेटासोर्स ऑटो-कॉन्फ़िगरेशन काम नहीं करेगा, यहां तक कि आप इन (या टॉमकैट डेटासोर्स कॉन्फिडेंस) को अपनी कॉन्फ़िगरेशन फ़ाइल में डालते हैं:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.test-on-borrow: true
spring.datasource.validation-query: SELECT 1 FROM DUAL
spring.datasource.log-validation-errors: true
मुझे लगता है कि यही कारण है कि आप पूल में अपने कनेक्शन का उपयोग करने से पहले उन्हें सत्यापित नहीं कर सकते।
आपको TomcatJdbcDataSourceFactory बीन के पूल गुण इस तरह सेट करने के लिए postProcessAfterInitialization विधि को ओवरराइड करने की आवश्यकता है:
@Component
public class PoolConfiguration implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof TomcatJdbcDataSourceFactory) {
TomcatJdbcDataSourceFactory tomcatJdbcDataSourceFactory = (TomcatJdbcDataSourceFactory) bean;
tomcatJdbcDataSourceFactory.setTestOnBorrow(true);
tomcatJdbcDataSourceFactory.setTestWhileIdle(true);
tomcatJdbcDataSourceFactory.setValidationQuery("SELECT 1");
}
return bean;
}
}
मुझे इसके लिए कोई अन्य समाधान नहीं मिला। वैसे यह spring-cloud-aws-autoconfigure का एक बग हो सकता है पैकेट।
शुभकामनाएँ!