Ответ 1
Попробуйте изменить следующую строку
@Value("${item.priceFactor}")
в
@Value("#{new Double('${item.priceFactor}')}")
Я хочу использовать аннотацию @Value, чтобы ввести свойство Double, например:
@Service
public class MyService {
@Value("${item.priceFactor}")
private Double priceFactor = 0.1;
// ...
и использование Spring place placeholder (Свойства файлов):
item.priceFactor=0.1
Я получаю исключение:
org.springframework.beans.TypeMismatchException: Не удалось преобразовать значение типа "java.lang.String" в требуемый тип "java.lang.Double"; inested exception is java.lang.NumberFormatException: для строки ввода: "$ {item.priceFactor}"
Есть ли способ использовать двойное значение, поступающее из файла свойств?
Попробуйте изменить следующую строку
@Value("${item.priceFactor}")
в
@Value("#{new Double('${item.priceFactor}')}")
Это должно решить problem-
@Value("#{new Double.parseDouble('${item.priceFactor}')}")
private Double priceFactor;
Как насчет сохранения строки и преобразования в числа, такие как целые числа и удваивается через геттеры и сеттеры? Для безопасного кода с Java-инъекцией вы всегда должны использовать геттеры и сеттеры и только для других методов в любом случае. Я советую вам тепло читать информацию о безопасности Java (что НЕ для хакеров), но больше для использования кода и написания аналогично тому, который вы загрузили, который использует инъекции.