Ordine immobiliare in boot primaverile
-
21-12-2019 - |
Domanda
Voglio scrivere il mio avviatore di boot primavera e lasciarlo ereditare da un altro antipasto (diciamo a Spring-Boot-Starter-Batch). Ora voglio impostare una delle proprietà di boot-boot-boot-batch in un valore predefinito che differisce da predefinito di molle-boot-starter-batch (ad esempio spring.batch.job.enabled=false
anziché true). L'utente del mio starter sarà ancora in grado di sovrascriverlo tramite application.properties
.
Non è davvero possibile, giusto? L'ordine per le proprietà di lettura è il seguente:
- .
- Argomenti della riga di comando.
- Proprietà del sistema Java (
System.getProperties()
). - Variabili dell'ambiente del sistema operativo.
- Attributi JNDI da
java:comp/env
- A
RandomValuePropertySource
che ha solo proprietà inrandom.*
. - Annotazioni
@PropertySource
sulle tue classi@Configuration
. - Proprietà dell'applicazione al di fuori del tuo barattolo confezionato (
application.properties
tra cui le varianti di yaml e profilo). - Proprietà dell'applicazione confezionate all'interno del barattolo (
application.properties
inclusi varianti di yaml e profilo). - Proprietà predefinite (specificata utilizzando
SpringApplication.setDefaultProperties
).
Quindi se utilizzo @PropertySource
nel mio antipasto per impostare la proprietà, l'utente del mio starter non sarà in grado di sovrascriverlo tramite application.properties
. Non avrebbe senso cambiare l'ordine e impostare @PropertySource
al numero 8?
o c'è un modo per ottenere ciò che voglio?
Soluzione
L'ordine di @PropertySource
è sicuramente aumentato per il dibattito.Prima di questo dibattito, anche se dovresti essere in grado di aggiungere le tue fonti di proprietà in un ascoltatore o in iniziativa (come l'ascoltatore del file di configurazione esistente).