English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Springでproperties属性ファイルの読み取りと使用の詳細

Springでproperties属性ファイルの読み取りと使用の詳細

実際のプロジェクトでは、通常、設定可能なカスタマイズ情報(データベース接続情報、メール送信設定情報など)を属性ファイルに配置し、統一された設定管理を容易にします。例では、設定する属性情報を属性ファイルに配置しています。/WEB-INF/configInfo.properties内。

その中の一部の設定情報(メール送信に関する):

# メール送信に関する設定
email.host = smtp.163.com
email.port = xxx
email.username = xxx
email.password = xxx
email.sendFrom = [email protected]

Springコンテナが起動した際に、内蔵のbeanを使用して属性ファイル情報をロードし、bean.xmlに以下を追加します:

XMLコード

<!-- springの属性ローダー、propertiesファイルの属性をロード -->
 <bean id="propertyConfigurer"
 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 <property name="location">
  <value>/WEB-INF/configInfo.properties</value>
 </property>
 <property name="fileEncoding" value="utf-8" />
 </bean>

属性情報がロードされた後、その使用方法の1つは、他のbean定義内で属性情報のkeyに基づいてvalueを直接参照することです。例えば、メール送信器beanの設定は以下のようになります:

XMLコード

<!-- メール送信 -->
 <bean id="mailSender"
 class="org.springframework.mail.javamail.JavaMailSenderImpl">
 <property name="host">
  <value>${email.host}</value>
 </property>
 <property name="port">
  <value>${email.port}</value>
 </property>
 <property name="username">
  <value>${email.username}</value>
 </property>
 <property name="password">
  <value>${email.password}</value>
 </property>
 <property name="javaMailProperties">
  <props>
  <prop key="mail.smtp.auth">true</prop>
  <prop key="sendFrom">${email.sendFrom}</prop>
  </props>
 </property>
 </bean>

コード内で設定の属性情報を取得する別の使用方法は、javabean:ConfigInfo.javaを定義し、注解を使用してコード内で使用する必要がある属性情報を注入できます。属性ファイルには以下のような情報がありますが、コード内で取得して使用する必要があります:

Javaコード

#ファイルの保存パスを生成します
file.savePath = D:/テスト/
#ファイルのバックアップパスを生成し、使用後に対応するファイルをこのディレクトリに移動します
file.backupPath = D:/テストバックアップ/

ConfigInfo.javaにおける対応するコード:

Javaコード

@Component("configInfo")
public class ConfigInfo {
  @Value("${file.savePath}")
  private String fileSavePath;
  @Value("${file.backupPath}")
  private String fileBakPath;
  public String getFileSavePath() {
    return fileSavePath;
  }
  public String getFileBakPath() {
    return fileBakPath;
  }  
}

ビジネスクラスboでConfigInfoオブジェクトをアノテーション注入します:

Javaコード

@Autowired
private ConfigInfo configInfo;

bean.xmlにコンポーネントスキャナーを追加して、アノテーションによる自動注入を使用します:

XMLコード

<context:component-scan base-package="com.my.model" />

(上記のパッケージmodelにはConfigInfoクラスが含まれています。)

getメソッドを使用して対応する属性情報を取得します。利点はコードでの使用が便利ですが、新しい属性情報が必要な場合、ConfigInfo.javaに対応する追加・修正が必要です。

ご読読ありがとうございます。皆様のサポートに感謝します!

お気に入り