11

मैं इस तरह के रूप @value एनोटेशन उपयोग करने के लिए एक डबल संपत्ति इंजेक्षन करना चाहते हैं:स्प्रिंग @value TypeMismatchException: प्रकार का मान आवश्यक प्रकार के 'java.lang.String' परिवर्तित करने में विफल 'java.lang.Double'

@Service 
public class MyService { 

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

// ... 

और स्प्रिंग संपत्ति प्लेसहोल्डर का उपयोग कर (गुण फ़ाइलें):

item.priceFactor=0.1 

मैं अपवाद प्राप्त करें:

org.springframework.beans.TypeMismatchExce पशन: को 'java.lang.String' प्रकार के मान को आवश्यक प्रकार 'java.lang.Double' में बदलने में विफल रहा; इनपुट स्ट्रिंग के लिए:: नेस्टेड अपवाद java.lang.NumberFormatException है "$ {item.priceFactor}"

वहाँ एक डबल मूल्य से एक गुण फ़ाइल आ उपयोग करने के लिए कोई तरीका है?

+0

में निम्न पंक्ति

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

बदल रहा है 'double' काम करता है का प्रयास करें? –

+0

@AmiHollander यह प्राचीन प्रकार के डबल – guilhebl

उत्तर

8

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

के लिए भी एक लाख मूल्य का उत्तर देने में विफल रहता है, बहुत दुर्लभ है और कई स्थानों पर उपलब्ध नहीं है – ArifMustafa

+0

वसंत बूट 1.5.9 पर एक आकर्षण की तरह काम करता है – realPK

0

गेटर्स और सेटर्स के माध्यम से एक स्ट्रिंग को संग्रहित करने और पूर्णांक और युगल जैसे नंबरों में कनवर्ट करने के बारे में कैसे? जावा इंजेक्शन के साथ सुरक्षित कोड के लिए आपको हमेशा गेटर्स और सेटर्स का उपयोग करना चाहिए और किसी भी मामले में अन्य तरीकों के लिए। मैं सलाह देता हूं कि आप जावा सुरक्षा (जो हैकर्स के लिए नहीं है) के बारे में पढ़ने के लिए गर्मजोशी से सलाह देते हैं, लेकिन कोड उपयोग के लिए और लिखने के लिए और भी जिस तरह से आपने अपलोड किया है, वह इंजेक्शन का उपयोग करता है।

1

इस का समाधान करना चाहिए समस्या

@Value("#{new Double.parseDouble('${item.priceFactor}')}") 
private Double priceFactor; 
संबंधित मुद्दे