Property files com PropertyPlaceholderConfigurer

Os 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>

Principais referências