propertysource - Spring @Value TypeMismatchException: no se pudo convertir el valor del tipo ''java.lang.String'' al tipo requerido ''java.lang.Double''
spring boot configuration properties (3)
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 propiedad Spring (archivos de propiedades):
item.priceFactor=0.1
Me sale la 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 Double que provenga de un archivo de propiedades?
¿Qué tal almacenar una cadena y convertirla a números como números enteros y dobles a través de captadores y definidores? Para el código de seguridad con inyección de Java, siempre debe utilizar getters y setters y solo para otros métodos en cualquier caso. Le aconsejo encarecidamente que lea sobre la seguridad de java (que NO es para piratas informáticos), sino más para el uso del código y la escritura, así como el que cargó, que utiliza la inyección.
Esto deberia resolver el problema-
@Value("#{new Double.parseDouble(''${item.priceFactor}'')}")
private Double priceFactor;
Intenta cambiar la siguiente línea
@Value("${item.priceFactor}")
a
@Value("#{new Double(''${item.priceFactor}'')}")