webentwicklung-frage-antwort-db.com.de

Spring @Value TypeMismatchException: Fehler beim Konvertieren des Werts vom Typ 'Java.lang.String' in den erforderlichen Typ 'Java.lang.Double'

Ich möchte die Annotation @Value verwenden, um eine Double-Eigenschaft einzufügen, z. B .:

@Service
public class MyService {

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

// ...

und Verwenden des Spring-Eigenschaftsplatzhalters (Eigenschaftendateien):

item.priceFactor=0.1

Ich bekomme ausnahme:

org.springframework.beans.TypeMismatchException: Fehler beim Konvertieren des Werts vom Typ 'Java.lang.String' in den erforderlichen Typ 'Java.lang.Double'; verschachtelte Ausnahme ist Java.lang.NumberFormatException: Für Eingabezeichenfolge: "$ {item.priceFactor}"

Gibt es eine Möglichkeit, einen Double-Wert aus einer Eigenschaftendatei zu verwenden?

27
guilhebl

Versuchen Sie, die folgende Zeile zu ändern

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

zu

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

Dies sollte das Problem lösen.

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