Inizialmente, ho le seguenti specifiche:Come specificare correttamente un valore predefinito nell'annotazione Spring @Value?
@Value("#{props.isFPL}")
private boolean isFPL=false;
Questo funziona bene correttamente ottenere il valore dal file di proprietà:
isFPL = true
Tuttavia, la seguente espressione con risultati di default l'errore:
@Value("#{props.isFPL:false}")
private boolean isFPL=false;
L'analisi delle espressioni non è riuscita; l'eccezione annidata è org.springframework.expression.spel.SpelParseException: EL1041E: (pos 28): Dopo l'analisi di un'espressione valida, c'è ancora di più i dati nell'espressione: 'due punti (:)'
Ho provato anche a usa $ invece di #.
@Value("${props.isFPL:true}")
private boolean isFPL=false;
Quindi il valore di default in annotazione funziona bene, ma non ho avuto il valore corretto dal file delle proprietà:
Con '# {}' Si tratta di un'espressione, con '$ {}' è un segnaposto per un valore. La prima espressione che usi chiamerà un metodo/attributo su un bean chiamato oggetti di scena, quello con il segnaposto tenterà di localizzare una proprietà chiamata "props.isFPL" in "Ambiente". Dovresti usare quest'ultimo e probabilmente stai caricando le tue proprietà nel modo sbagliato. –
Grazie. Se carico le proprietà nel modo sbagliato perché # {} preleva il valore corretto? –
Perché quella è un'espressione non un segnaposto. Sono entrambi valutati in modi completamente diversi. –