web-dev-qa-db-ja.com

Springを使用してデータソースを開始するプロジェクトをGITを使用して管理する場合のデータベースパスワードの問題

私は、Spring Frameworkを使用してWebサービスをコーディングし、Dependencyインジェクションを使用して、Webサービスで使用されるDAO BeanにDataSource Beanをインジェクトします。私はすべてのデータベースプロパティ(URL、パスワード、ユーザー名、他の人に見せたくないもの)を持っていますDataSource Bean XMLで書かれています

プロジェクト全体をコミットするためのgitセットアップがあります。パスワードがプレーンテキストで記述されたDataSource Bean XMLを含みます。 .gitignoreを使用することを考えましたが、Bean XMLは私のWebサービスプロジェクトの重要なコンポーネントであり、無視してはなりません。しかし、私は世界中に私のパスワードを見られたくありません。

パスワードを世界に表示せずにBeanファイルをコミットするにはどうすればよいですか。

4
Louis Hong

Spring XMLに入力するものはすべて静的であり、バイナリにコンパイルされます。変更される可能性のある情報がある場合は、それをプロパティファイルに外部化することをお勧めします。 Springはプロパティファイルを読み取り、その値をBeanへの入力として使用できます。

これらのプロパティを挿入するには、プロパティプレースホルダーと呼ばれる概念を使用する必要があります。まず、MyApp.propertiesなどのプロパティファイルを作成し、/settings/MyAppなどの既知のディレクトリに配置します。ファイルの内容は次の形式になります。

databaseUsername=USER
databasePassword=PWD
property3=value3
property4=value4
...

Spring XMLに次のタグを追加します。

<context:property-placeholder location="file:///settings/MyApp/MyApp.properties"/>

これで、これらの外部プロパティをスプリングオブジェクトで簡単に使用できます。

<bean id="dataSource" class="...">
    <property name="username" value="${databaseUsername}">
    <property name="password" value="${databasePassword}">
</bean

これで、Spring XML(MyApp.propertiesは除く)を安全にチェックインして、他のユーザーが設定した場所に独自のMyApp.propertiesを持っていることを確認できます。

プロパティファイルのルックアップをより動的にするためにできることは他にもあります。詳細については、次のリンクを参照してください。

Springでプロパティファイルを管理するための6つのヒント

6
metacubed