Estoy usando la primavera Necesito leer valores del archivo de propiedades. Este es un archivo de propiedades interno, no el archivo de propiedades externo. El archivo de propiedades puede ser el siguiente.
some.properties ---file name. values are below.
abc = abc
def = dsd
ghi = weds
jil = sdd
Necesito leer esos valores del archivo de propiedades no de manera tradicional. ¿Cómo lograrlo? ¿Hay algún enfoque más reciente con spring 3.0?
spring
properties-file
usuario1016403
fuente
fuente
Respuestas:
Configure PropertyPlaceholder en su contexto:
Luego se refieren a las propiedades en sus granos:
EDITAR: se actualizó el código para analizar la propiedad con varios valores separados por comas:
Si eso no funciona, puede definir un bean con propiedades, inyectarlo y procesarlo manualmente:
y el frijol:
fuente
aaa
? ¿Es@Value(${aaa}) private String aaa;
entonces que podemosSystem.out.println(aaa)
???????@Value("${aaa}")
, tenga en cuenta las citas. Y sí, puede imprimirlo excepto en el constructor porque el constructor se ejecuta antes de que se inyecten los valores.Hay varias formas de lograr lo mismo. A continuación se presentan algunas formas comúnmente utilizadas en primavera.
Uso de PropertyPlaceholderConfigurer
Usando PropertySource
Usando ResourceBundleMessageSource
Usando PropertiesFactoryBean
y muchos más........................
Asumir
ds.type
es clave en su archivo de propiedades.Utilizando
PropertyPlaceholderConfigurer
Registrarse
PropertyPlaceholderConfigurer
bean-o
o
Después de registrarse
PropertySourcesPlaceholderConfigurer
, puede acceder al valorUtilizando
PropertySource
En la última versión de primavera que no es necesario registrar
PropertyPlaceHolderConfigurer
con@PropertySource
, me encontré con un buen enlace para entender versión compatibility-Utilizando
ResourceBundleMessageSource
Registrarse Bean-
Valor de acceso
o
Utilizando
PropertiesFactoryBean
Registrarse Bean-
Instale las propiedades de Wire en su clase
fuente
En la clase de configuración
fuente
app.properties
prueba diferente en producción v. En otras palabras, ¿parte de su proceso de implementación sería reemplazarapp.properties
con valores de producción?Aquí hay una respuesta adicional que también fue de gran ayuda para entender cómo funcionaba: http://www.javacodegeeks.com/2013/07/spring-bean-and-propertyplaceholderconfigurer.html
fuente
PropertySourcesPlaceholderConfigurer
Bean con@PropertySource
@PropertySource
completo.Si necesita leer manualmente un archivo de propiedades sin usar @Value.
Gracias por la página bien escrita de Lokesh Gupta: Blog
fuente
Debe colocar un bean PropertyPlaceholderConfigurer en el contexto de su aplicación y establecer su propiedad de ubicación.
Ver detalles aquí: http://www.zparacha.com/how-to-read-properties-file-in-spring/
Es posible que deba modificar un poco su archivo de propiedades para que esto funcione.
Espero eso ayude.
fuente
Otra forma es usar un ResourceBundle . Básicamente, obtienes el paquete usando su nombre sin las '.properties'
Y recuperas cualquier valor usando esto:
fuente
fuente
Recomiendo leer este enlace https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html de los documentos de SpringBoot sobre la inyección de configuraciones externas. No solo hablaron sobre la recuperación de un archivo de propiedades sino también de archivos YAML e incluso JSON. Lo encontré útil. Espero que ustedes también.
fuente
Quería una clase de utilidad que no sea administrada por spring, así que no hay anotaciones de spring como
@Component
,@Configuration
etc. Pero quería que la clase leyeraapplication.properties
Me las arreglé para que funcionara haciendo que la clase conozca el Contexto de Primavera, por lo tanto, esté al tanto
Environment
y, por lo tanto,environment.getProperty()
funcione como se esperaba.Para ser explícito, tengo:
application.properties
Utils.java
ApplicationContextProvider.java (vea Spring get Current ApplicationContext )
fuente