5

现在我在我的 xml 文件中有这个:

         <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/dashboardsupervisor" />
    <property name="username" value="root" />
    <property name="password" value="${jdbc.password}" />
</bean>

            <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
    <value>file:C:/jdbc.properties</value>
  </property>
</bean>

现在,我的问题是我不知道这个文件(jdbc.properties)的确切位置,因为这个应用程序将在不同的计算机上运行,​​在某些地方它安装在 c: 中,有时可能在 f:..所以如果我不知道这个文件的路径,如果有的话我可以找到它。

谢谢

4

4 回答 4

14

You can define the file location as system property, eg -Dprops.file=file:c:/1.properties

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
    <value>$props.file</value>
  </property>
</bean>

or

<context:property-placeholder location="${props.file}"/>

or you can scan the file system

public class ScanningPropertyPlaceholderConfigurer extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer {
    @Override
       public void setLocation(Resource location) {
       File file = findFile(fileName);  // implement file finder
       super.setLocation(new FileSystemResource(file));
    }
}
于 2013-04-21T04:02:52.223 回答
2
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
configurer.setLocation(new ClassPathResource("context.properties"));

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"}, false);
applicationContext.addBeanFactoryPostProcessor(configurer);
applicationContext.refresh();
于 2013-10-09T14:03:13.160 回答
0

是的。您可以让Spring在类路径中找到该文件。该文件可以存在于不同机器上的不同位置,但只要它存在于类路径中就会被加载。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="location">
      <value>classpath:jdbc.properties</value>
   </property>
</bean>
于 2013-04-21T01:32:17.897 回答
0

可以有多种方法来处理它。

  1. 将文件放入项目中,这样你就可以一直拥有相同的相对路径。
  2. 在构建过程中填充值,即在值标签中放置一个占位符,并在构建过程中通过传递参数来替换它。例如,如果您使用 ant 进行构建,则可以使用expandpropertiestask 来完成。
于 2013-04-21T01:34:34.540 回答