如何从外部分配一些spring属性值

时间:2010-12-19 05:01:15

标签: spring

我想在我的应用程序中外化一些valraibles的值,这些值使用spring作为属性文件。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

Spring为此提供了一个名为BeanFactoryPostProcessorPropertyPlaceholderConfigurer

以下是一个例子:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations" value="classpath: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>

在类路径中放置一个名为jdbc.properties的文件,如图所示

jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/default
jdbc.username=sa
jdbc.password=sa

创建spring上下文时,$ {..}中传递的每个值都被视为一个键,值将被视为PropertyPlaceholderConfigurer bean。如果密钥不存在则会抛出异常。如果您不希望抛出异常,请将属性ignoreUnresolvablePlaceholders设置为true,如果未找到该键,则该值将作为密钥本身。