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:

    .
  1. Argomenti della riga di comando.
  2. Proprietà del sistema Java (System.getProperties()).
  3. Variabili dell'ambiente del sistema operativo.
  4. Attributi JNDI da java:comp/env
  5. A RandomValuePropertySource che ha solo proprietà in random.*.
  6. Annotazioni @PropertySource sulle tue classi @Configuration.
  7. Proprietà dell'applicazione al di fuori del tuo barattolo confezionato (application.properties tra cui le varianti di yaml e profilo).
  8. Proprietà dell'applicazione confezionate all'interno del barattolo (application.properties inclusi varianti di yaml e profilo).
  9. Proprietà predefinite (specificata utilizzando SpringApplication.setDefaultProperties).
  10. 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?

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top