Quiero acceder a los valores proporcionados en application.properties, por ejemplo:
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.file=${HOME}/application.log
userBucket.path=${HOME}/bucket
Quiero acceder userBucket.pathen mi programa principal en una aplicación Spring Boot.
java
spring-boot
properties-file
Qasim
fuente
fuente

Environmento vía@ConfigurationProperties@Configurationclases, el problema se analiza bien en la siguiente publicación de blog@Component(o cualquiera de sus derivados, es decir@Repository, etc.)Otra forma es inyectando
org.springframework.core.env.Environmenta su frijol.fuente
org.springframework.core.env.Environment@ConfigurationPropertiesse puede usar para asignar valores de.properties(.ymltambién compatibles) a un POJO.Considere el siguiente archivo de ejemplo.
.propiedades
Employee.java
Ahora se puede acceder al valor de las propiedades mediante el cableado automático de la
employeePropertiessiguiente manera.fuente
src/main/resourcessi no está probando su código desde una prueba de Spring.Actualmente, conozco las siguientes tres formas:
1. La
@Valueanotaciónnull. Por ejemplo, cuando intenta configurarlo en unpreConstruct()método o uninit()método. Esto sucede porque la inyección de valor ocurre después de que la clase está completamente construida. Es por eso que es mejor usar la tercera opción.2. La
@PropertySourceanotaciónPropertySouceestablece valores del archivo fuente de la propiedad en unaEnvironmentvariable (en su clase) cuando se carga la clase. Así que puedes buscar fácilmente el epílogo.3. La
@ConfigurationPropertiesanotación.Inicializa una entidad basada en datos de propiedad.
@ConfigurationPropertiesidentifica el archivo de propiedad para cargar.@Configurationcrea un bean basado en variables del archivo de configuración.@ConfigurationProperties (prefijo = "usuario") @Configuration ("UserData") usuario de clase { // Propiedad y su captador / definidor } @Autowired Private UserData userData; userData.getPropertyName ();fuente
spring.config.location? ¿El # 2 todavía funciona?Puedes hacerlo de esta manera también ...
Luego, donde quiera leer desde application.properties, simplemente pase la clave al método getConfigValue.
fuente
Environment?spring.config.location?Puede usar el
@Valuepara cargar variables desdeapplication.propertiessi usará este valor en un lugar, pero si necesita una forma más centralizada de cargar estas variables@ConfigurationPropertieses un mejor enfoque.Además, puede cargar variables y emitirlas automáticamente si necesita diferentes tipos de datos para realizar sus validaciones y lógica de negocios.
fuente
sigue estos pasos. 1: - crea tu clase de configuración como a continuación puedes ver
2: - cuando tenga una clase de configuración, inyecte la variable desde una configuración donde la necesite.
fuente
fuente
Una aplicación puede leer 3 tipos de valor del archivo application.properties.
application.properties
archivo de clase
Si no tiene una propiedad en application.properties, puede usar el valor predeterminado
fuente
Spring-boot nos permite varios métodos para proporcionar configuraciones externalizadas, puede intentar usar los archivos application.yml o yaml en lugar del archivo de propiedades y proporcionar diferentes archivos de propiedades configurados de acuerdo a diferentes entornos.
Podemos separar las propiedades de cada entorno en archivos yml separados en perfiles de resorte separados. Luego, durante la implementación, puede usar:
para especificar qué perfil de resorte usar. Tenga en cuenta que los archivos yml deben tener un nombre como
para que sean automáticamente recogidos por springboot.
Referencia: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties
Para leer desde el archivo application.yml o de propiedad:
La forma más fácil de leer un valor del archivo de propiedades o yml es usar la anotación spring @value. Spring carga automáticamente todos los valores desde el yml al entorno spring, por lo que podemos usar directamente esos valores del entorno como:
U otro método que proporciona spring para leer frijoles fuertemente tipados es el siguiente:
POJO correspondiente para leer el yml:
El método anterior funciona bien con archivos yml.
Referencia: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
fuente
Para mí, ninguno de los anteriores me funcionó directamente. Lo que hice es lo siguiente:
Además de @Rodrigo Villalba Zayas respondí allí agregué
implements InitializingBeana la clasee implementé el método
Entonces eso se verá como
fuente
Se están utilizando las mejores formas de obtener valores de propiedad.
1. Usando la anotación de valor
2. Usando frijol ambiental
fuente
Lo mejor es usar la
@Valueanotación, asignará automáticamente valor a su objetoprivate Environment en. Esto reducirá su código y será fácil filtrar sus archivos.fuente
Hay dos vías,
@Valueen tu claseO
@Configurationclase donde puede agregar todos sus@valuefuente