English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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に対応する追加・修正が必要です。
ご読読ありがとうございます。皆様のサポートに感謝します!