es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo leer application.properties en código Java

Hola, me gustaría leer valores de application.properties. He encontrado que esto debería funcionar:

public static void main(String[] args) {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application-context.xml");
    Environment environment = applicationContext.getEnvironment();
    System.out.println("STARTING:");
    System.out.println("Connecting to: "+environment.getProperty("datasource"));
}

pero obtengo null para el valor de datasource.

mi application-context.xml se ve así:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:property-placeholder location="classpath:application.properties"></context:property-placeholder>
</beans>

¿alguien podría decirme dónde podría estar el problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el archivo application-context.xml está cargando correctamente el archivo application.properties utilizando la etiqueta context:property-placeholder. Sin embargo, en el método main, se recupera el objeto Environment del ApplicationContext, pero no se le dice explícitamente que utilice el archivo application-context.xml para cargar las propiedades.

    Para solucionar esto, puedes modificar el método main para cargar explícitamente el archivo application-context.xml:

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application-context.xml");
        ConfigurableEnvironment environment = (ConfigurableEnvironment) applicationContext.getEnvironment();
        environment.setActiveProfiles("development"); // alternativamente, esto se puede configurar en el archivo application.properties
        System.out.println("INICIANDO:");
        System.out.println("Conectando a: " + environment.getProperty("datasource"));
    }
    

    En esta versión modificada del método main, ClassPathXmlApplicationContext carga explícitamente el archivo application-context.xml. Además, se realiza una conversión del objeto environment a un objeto ConfigurableEnvironment, lo cual permite configurar perfiles activos (si se están utilizando). Por último, se utiliza el método getProperty para recuperar la propiedad datasource del objeto environment.

Comments are closed.