Property files com PropertyPlaceholderConfigurer
03 Sep 2010Os arquivos de propriedades são muito úteis para configurar variáveis de ambiente, parâmetros de inicialização etc. Quem nunca usou um .properties?!
Esse post é um guia rápido de utilização do Spring PropertyPlaceholderConfigurer.
Criando um properties
Utilizei a seguinte estrutura src/resources/app-config.properties
.
# WS Config
ws.baseAddress=http://127.0.0.1:9801/
# DB Config
db.url=jdbc:mysql://localhost:3306/db
db.username=username
db.password=password
db.driverClass=com.mysql.jdbc.Driver
Configurando o app-config.xml
<bean id="propertiesPlacholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="false">
<property name="location" value="classpath:/resources/app-config.properties" />
</bean>
<bean>
<property name="baseAddress" value="${ws.baseAddress}" />
</bean>
<!-- DataSource SQL Server -->
<bean id="dataSource" destroy-method="close" scope="singleton">
<property name="driverClassName" value="#{db.driverClass}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
O app-config.xml é o nome do arquivo de configuração do Spring, que pode mudar de acordo com o seu ambiente.
Exemplo de configuração do app-config.xml.
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Utilizando múltiplos properties
Caso sua aplicação utilize múltiplos properties, basta adicioná-los na declaração do bean PropertyPlaceholderConfigurer.
<bean id="propertiesPlacholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="false">
<property name="locations">
<list>
<value>classpath:/resources/app-config-db.properties</value>
<value>classpath:/resources/app-config-ws.properties</value>
</list>
</property>
</bean>