Я пытаюсь использовать аннотацию @Value в параметрах конструктора следующим образом:
@Autowired
public StringEncryptor(
@Value("${encryptor.password:\"\"}") String password,
@Value("${encryptor.algorithm:\"PBEWithMD5AndTripleDES\"}") String algorithm,
@Value("${encryptor.poolSize:10}") Integer poolSize,
@Value("${encryptor.salt:\"\"}") String salt) {
...
}
Когда файл свойств присутствует в пути к классам, свойства загружаются идеально, и тест выполняется нормально. Однако, когда я удаляю файл свойств из пути к классам, я ожидал, что будут использоваться значения по умолчанию, например, poolSize будет установлен в 10 или алгоритм PBEWithMD5AndTripleDES, однако это не так.
Выполнение кода через отладчик (который будет работать только после изменения @Value("${encryptor.poolSize:10}") Integer poolSize
на @Value("${encryptor.poolSize:10}") String poolSize
, как это вызывало NumberFormatExceptions). Я обнаружил, что значения по умолчанию не установлены и параметры имеют вид:
poolSize = ${encryptor.poolSize:10}
или
algorithm = ${encryptor.algorithm:"PBEWithMD5AndTripleDES"}
вместо ожидаемого
poolSize = 10
или
algorithm = "PBEWithMD5AndTripleDES"
На основе SPR-4785 должна работать нотация, такая как $ {my.property:myDefaultValue}. Все же это не происходит для меня!
Спасибо