Si vous utilisez la configuration automatique pour définir la connexion RDS à partir du fichier de propriétés comme ceci :
cloud.aws.rds.testdb.password=testdbpwd
cloud.aws.rds.testdb.username=testdbuser
cloud.aws.rds.testdb.databaseName=testdb
La configuration automatique de la source de données Spring Boot ne fonctionnera pas même si vous mettez ces éléments (ou la configuration de la source de données Tomcat) dans votre fichier de configuration :
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
Je pense que c'est la raison pour laquelle vous ne pouvez pas valider vos connexions dans le pool, avant de les utiliser.
Vous devez remplacer la méthode postProcessAfterInitialization pour définir les propriétés de pool du bean TomcatJdbcDataSourceFactory comme ceci :
@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;
}
}
Je n'ai trouvé aucune autre solution pour cela. Au fait, cela pourrait être un bogue de spring-cloud-aws-autoconfigure paquet.
Bonne chance !