Quiero usar la anotación @Value para inyectar una propiedad Double como:
@Service public class MyService { @Value("${item.priceFactor}") private Double priceFactor = 0.1; // ...y usando el marcador de posición de la propiedad Spring (archivos de propiedades):
item.priceFactor=0.1me sale excepción:
org.springframework.beans.TypeMismatchException: no se pudo convertir el valor del tipo 'java.lang.String' al tipo requerido 'java.lang.Double'; la excepción anidada es java.lang.NumberFormatException: para la cadena de entrada: "${item.priceFactor}"
¿Hay alguna manera de usar un valor doble proveniente de un archivo de propiedades?
Prueba a cambiar la siguiente linea
@Value("${item.priceFactor}")a
@Value("#{new Double('${item.priceFactor}')}")Esto deberia resolver el problema-
@Value("#{T(Double).parseDouble('${item.priceFactor}')}") private Double priceFactor;Tuve un problema similar, pero en lugar del required type 'java.lang.Double' , se required type 'java.lang.Long' . Estaba usando env. variables de un archivo YAML. Resulta que YAML no admite el tipo de datos Long .