11

chcę użyć @Value adnotacji do wstrzykiwać podwójnej właściwości takie jak:Wiosna @Value TypeMismatchException: Nie można przekonwertować wartości typu „java.lang.String” do wymaganego typu „java.lang.Double”

@Service 
public class MyService { 

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

// ... 

i obsługa nieruchomości Wiosna zastępczy (pliki Properties):

item.priceFactor=0.1 

otrzymuję wyjątek:

org.springframework.beans.TypeMismatchExce ption: Nie można przekonwertować wartości typu "java.lang.String" na wymagany typ "java.lang.Double"; wyjątek zagnieżdżonych jest java.lang.NumberFormatException: Dla ciągu wejściowego: „$ {item.priceFactor}”

Czy istnieje sposób stosować podwójnej wartości pochodzących z pliku właściwości?

+0

jest 'double' działa? –

+0

@AmiHollander nie powiedzie się nawet dla prymitywnego typu podwójnie – guilhebl

Odpowiedz

8

Spróbuj zmienić następującą linię

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

do

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

za milion dolarów odpowiedź, bardzo rzadka i niedostępna w wielu miejscach – ArifMustafa

+0

Działa jak urok na wiosennej wersji startowej 1.5.9 – realPK

0

Co powiesz na przechowywanie ciągu znaków i konwersję na liczby takie jak liczby całkowite i podwójne za pomocą modułów pobierających i ustawiających? Aby uzyskać bezpieczny kod za pomocą wtrysku Java, zawsze powinieneś używać programów pobierających i ustawiających i tylko w przypadku innych metod. Radzę wam serdecznie, aby przeczytali o bezpieczeństwie java (co NIE jest dla hakerów), ale bardziej o używaniu kodu i pisaniu podobnie do tego, który przesłaliście, który używa wtrysku.

1

To powinno rozwiązać problem-

@Value("#{new Double.parseDouble('${item.priceFactor}')}") 
private Double priceFactor; 
Powiązane problemy