我想在我的应用程序中外化一些valraibles的值,这些值使用spring作为属性文件。
我怎样才能做到这一点?
答案 0 :(得分:3)
Spring为此提供了一个名为BeanFactoryPostProcessor的PropertyPlaceholderConfigurer。
以下是一个例子:
<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
,如果未找到该键,则该值将作为密钥本身。