web-dev-qa-db-fra.com

Spring @Value TypeMismatchException: Impossible de convertir la valeur de type 'Java.lang.String' en type requis 'Java.lang.Double'

Je souhaite utiliser l'annotation @Value pour injecter une propriété Double telle que:

@Service
public class MyService {

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

// ...

et en utilisant un espace réservé de propriété Spring (fichiers de propriétés):

item.priceFactor=0.1

Je reçois une exception:

org.springframework.beans.TypeMismatchException: Impossible de convertir la valeur de type 'Java.lang.String' en type requis 'Java.lang.Double'; L'exception imbriquée est Java.lang.NumberFormatException: pour la chaîne de saisie: "$ {item.priceFactor}"

Est-il possible d'utiliser une valeur Double provenant d'un fichier de propriétés?

27
guilhebl

Essayez de changer la ligne suivante

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

à

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

Cela devrait résoudre le problème-

@Value("#{new Double.parseDouble('${item.priceFactor}')}")
private Double priceFactor;
4
pkoli