Pregunta

Quiero escribir mi propio iniciador Spring Boot y dejar que herede de otro iniciador (digamos spring-boot-starter-batch).Ahora quiero establecer una de las propiedades de spring-boot-starter-batch en un valor predeterminado que difiera del valor predeterminado de spring-boot-starter-batch (por ejemplo spring.batch.job.enabled=false en lugar de verdadero).El usuario de mi iniciador aún podrá anularlo a través de application.properties.

Eso no es realmente posible, ¿verdad?El orden de lectura de las propiedades es el siguiente:

  1. Argumentos de la línea de comando.
  2. Propiedades del sistema Java (System.getProperties()).
  3. Variables de entorno del sistema operativo.
  4. Atributos JNDI de java:comp/env
  5. A RandomValuePropertySource que solo tiene propiedades en random.*.
  6. @PropertySource anotaciones en su @Configuration clases.
  7. Propiedades de la aplicación fuera de su frasco empaquetado (application.properties incluyendo YAML y variantes de perfil).
  8. Propiedades de la aplicación empaquetadas dentro de su frasco (application.properties incluyendo YAML y variantes de perfil).
  9. Propiedades predeterminadas (especificadas usando SpringApplication.setDefaultProperties).

Entonces si uso @PropertySource en mi iniciador para establecer la propiedad, el usuario de mi iniciador no podrá anularla a través de application.properties.¿No tendría sentido cambiar el orden y establecer @PropertySource en el número 8?

¿O hay alguna manera de lograr lo que quiero?

¿Fue útil?

Solución

El orden de @PropertySource está definitivamente para el debate.Antes de ese debate, aunque debería poder agregar sus propias fuentes de propiedad en un oyente o inicializador (como el escuchador de archivos de configuración existente).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top