web-dev-qa-db-ja.com

Spring @Value TypeMismatchException:タイプ「Java.lang.String」の値を必要なタイプ「Java.lang.Double」に変換できませんでした

@Valueアノテーションを使用して、次のようなDoubleプロパティを挿入します。

@Service
public class MyService {

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

// ...

springプロパティプレースホルダー(プロパティファイル)の使用:

item.priceFactor=0.1

例外が発生します:

org.springframework.beans.TypeMismatchException:タイプ 'Java.lang.String'の値を必要なタイプ 'Java.lang.Double'に変換できませんでした。ネストされた例外はJava.lang.NumberFormatException:入力文字列の場合: "$ {item.priceFactor}"

プロパティファイルから取得したDouble値を使用する方法はありますか?

27
guilhebl

次の行を変更してみてください

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

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

これで問題が解決するはずです。

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