Я предотвратил регистрацию этих паролей, расширив классы JobParameter и JobParameters, создав классы SensitiveJobParameter и SensistiveJobParameters соответственно, которые переопределяют toString() и getString() соответственно, чтобы параметры могли быть правильно возвращены, когда это необходимо, и записаны в виде звездочек, когда это необходимо.
Это позволяет мне маскировать конфиденциальные параметры звездочками и, похоже, в основном работает. Однако похоже, и я все еще просматриваю журналы, чтобы убедиться, что это так: если задание завершается сбоем и перезапускается, параметры загружаются из базы данных и не очищаются.
Есть ли в коде/конфигурации способ запретить пакету Spring регистрировать свои параметры?
Я знаю, что могу изменить конфигурацию slf4j, чтобы остановить задание лаунчер от ведения журнала, но это означает, что все, что кто-то должен сделать, это изменить конфигурацию ведения журнала, чтобы регистрировать пароли, что я не считаю приемлемым.
Параметры специально указаны регистрируется SimpleJobLauncher в этом блоке кода:
Код: Выделить всё
taskExecutor.execute(new Runnable() {
@Override
public void run() {
try {
logger.info("Job: [" + job + "] launched with the following parameters: [" + jobParameters
+ "]");
job.execute(jobExecution);
logger.info("Job: [" + job + "] completed with the following parameters: [" + jobParameters
+ "] and the following status: [" + jobExecution.getStatus() + "]");
}
catch (Throwable t) {
logger.info("Job: [" + job
+ "] failed unexpectedly and fatally with the following parameters: [" + jobParameters
+ "]", t);
rethrow(t);
}
}
private void rethrow(Throwable t) {
if (t instanceof RuntimeException) {
throw (RuntimeException) t;
}
else if (t instanceof Error) {
throw (Error) t;
}
throw new IllegalStateException(t);
}
});
И если я не смогу найти лучшее решение, я могу переопределить метод запуска средства запуска SimpleJob, чтобы не иметь этого оператора журналирования, но это кажется излишним.
п>
Подробнее здесь: https://stackoverflow.com/questions/373 ... parameters