#connection-pooling #hikaricp
#объединение в пул соединений #hikaricp
Вопрос:
Нам нужно динамически передавать пароль в Hikari CP, чтобы всякий раз, когда мы меняем пароль базы данных, наш сервис мог использовать его без перезапуска. Я видел, что в классе PoolBase CP Hikari у нас есть newConnection()
метод, в котором мы берем пароль из объекта конфигурации Hikari.
фрагмент, взятый из класса PooBase
private Connection newConnection() throws Exception
{
final long start = currentTime();
Connection connection = null;
try {
String username = config.getUsername();
String password = config.getPassword();
connection = (username == null) ? dataSource.getConnection() : dataSource.getConnection(username, password);
if (connection == null) {
throw new SQLTransientConnectionException("DataSource returned null unexpectedly");
}
setupConnection(connection);
lastConnectionFailure.set(null);
return connection;
}
catch (Exception e) {
if (connection != null) {
quietlyCloseConnection(connection, "(Failed to create/setup connection)");
}
else if (getLastConnectionFailure() == null) {
logger.debug("{} - Failed to create/setup connection: {}", poolName, e.getMessage());
}
lastConnectionFailure.set(e);
throw e;
}
finally {
// tracker will be null during failFast check
if (metricsTracker != null) {
metricsTracker.recordConnectionCreated(elapsedMillis(start));
}
}
}
Как я могу переопределить getPassword()
метод, чтобы он мог использовать мой пользовательский метод для получения пароля, который приведет пароль из хранилища.