Java – Spring @Value TypeMismatchException:Failed to convert value of type ‘java.lang.String’ to required type ‘java.lang.Double’

javaproperty-placeholderspringspring-elspring-properties

I want to use the @Value annotation to inject a Double property such as:

@Service
public class MyService {

    @Value("${item.priceFactor}")
    private Double priceFactor = 0.1;

// ...

and using Spring property placeholder (Properties files):

item.priceFactor=0.1

I get Exception:

org.springframework.beans.TypeMismatchException: Failed to convert
value of type 'java.lang.String' to required type 'java.lang.Double';
nested exception is java.lang.NumberFormatException: For input string:
"${item.priceFactor}"

Is there a way to use a Double value coming from a properties file?

Best Answer

Try changing the following line

@Value("${item.priceFactor}")

to

@Value("#{new Double('${item.priceFactor}')}")