自動構成を使用して、次のようにプロパティファイルから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
これが、プール内の接続を使用する前に検証できない理由だと思います。
次のようにTomcatJdbcDataSourceFactoryBeanのプールプロパティを設定するには、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のバグである可能性があります。 パケット。
幸運を祈ります!