Solución:
Puede crear un contexto de aplicación basado en XML como:
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
si el archivo xml se encuentra en su ruta de clases. Alternativamente, puede usar un archivo en el sistema de archivos:
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");
Hay más información disponible en los documentos de referencia de Spring. También debe registrar un gancho de cierre para garantizar un cierre correcto:
ctx.registerShutdownHook();
A continuación, puede usar PropertyPlaceHolderConfigurer para extraer las propiedades de un archivo ‘.properties’ e inyectarlas en sus beans:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:com/foo/jdbc.properties"/>
</bean>
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
Por último, si prefiere una configuración basada en anotaciones, puede utilizar la @Value
anotación para inyectar propiedades en sus frijoles:
@Component
public class SomeBean {
@Value("${jdbc.url}")
private String jdbcUrl;
}
A partir de Spring 4, puede usar la anotación @PropertySource en un Spring @Configuration
clase:
@Configuration
@PropertySource("application.properties")
public class ApplicationConfig {
// more config ...
}
Si desea tener su configuración fuera de su classpath, puede usar el file:
prefijo:
@PropertySource("file:/path/to/application.properties")
Alternativamente, puede utilizar una variable de entorno para definir el archivo
@PropertySource("file:${APP_PROPERTIES}")
Dónde APP_PROPERTIES
es una variable de entorno que tiene el valor de la ubicación del archivo de propiedades, p. ej. /path/to/application.properties
.
Lea la publicación de mi blog Spring @PropertySource para obtener más información sobre @PropertySource
, su uso, cómo se pueden anular los valores de propiedad y cómo se pueden especificar las fuentes de propiedad opcionales.
No tienes que usar Spring. Puede leer con Java simple como este:
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));