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

-Dprops.file=file:c:/1.properties のように、ファイルの場所をシステム プロパティとして定義できます。

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

また

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

または、ファイルシステムをスキャンできます

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. ビルド中に値を入力します。つまり、値タグにプレースホルダーを置き、パラメーターを渡すことでビルド中に置き換えます。expandpropertiesたとえば、ビルドに ant を使用している場合は、タスクを使用してビルドできます。
于 2013-04-21T01:34:34.540 に答える