Ако използвате автоматична конфигурация, за да дефинирате RDS връзка от файла със свойства по следния начин:
cloud.aws.rds.testdb.password=testdbpwd
cloud.aws.rds.testdb.username=testdbuser
cloud.aws.rds.testdb.databaseName=testdb
Автоматичната конфигурация на източника на данни за пружинно зареждане няма да работи дори да поставите тези (или tomcat datasource conf) във вашия конфигурационен файл:
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
Мисля, че това е причината, поради която не можете да потвърдите връзките си в пула, преди да ги използвате.
Трябва да замените метода postProcessAfterInitialization, за да зададете свойства на пула на TomcatJdbcDataSourceFactory bean по следния начин:
@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 пакет.
Успех!