Początkowo, mam następujące specyfikację:Jak poprawnie określić wartość domyślną w adnotacji Spring @Value?
@Value("#{props.isFPL}")
private boolean isFPL=false;
to działa prawidłowo prawidłowo uzyskanie wartości z pliku właściwość:
isFPL = true
Jednak następujące wyrażenie z domyślnych powoduje błąd:
@Value("#{props.isFPL:false}")
private boolean isFPL=false;
Parsowanie wyrażeń nie powiodło się; Zagnieżdżony wyjątek to org.springframework.expression.spel.SpelParseException: EL1041E: (pos 28): Po przeanalizowaniu poprawnego wyrażenia w wyrażeniu jest jeszcze więcej danych: 'dwukropek (:)'
Próbowałem również użyj $ zamiast #.
@Value("${props.isFPL:true}")
private boolean isFPL=false;
to wartość domyślna w adnotacji działa dobrze, ale nie dostać poprawną wartość z pliku properties:
od '# {}' jest wyrazem, z '$ {}' to jest zastępczy dla wartości. Pierwsze używane wyrażenie wywoła metodę/atrybut na komponencie bean o nazwie rekwizyty, a ten z elementem zastępczym spróbuje zlokalizować właściwość o nazwie 'props.isFPL' w' Środowisku'. Powinieneś użyć tego ostatniego i prawdopodobnie ładujesz swoje nieruchomości w niewłaściwy sposób. –
Dziękuję. Jeśli ładuję właściwości w niewłaściwy sposób, dlaczego # {} podnosi poprawną wartość? –
Ponieważ jest to wyrażenie, które nie jest symbolem zastępczym. Oba są oceniane na zupełnie różne sposoby. –