私は、Spring Frameworkを使用してWebサービスをコーディングし、Dependencyインジェクションを使用して、Webサービスで使用されるDAO BeanにDataSource Beanをインジェクトします。私はすべてのデータベースプロパティ(URL、パスワード、ユーザー名、他の人に見せたくないもの)を持っていますDataSource Bean XMLで書かれています!
プロジェクト全体をコミットするためのgitセットアップがあります。パスワードがプレーンテキストで記述されたDataSource Bean XMLを含みます。 .gitignoreを使用することを考えましたが、Bean XMLは私のWebサービスプロジェクトの重要なコンポーネントであり、無視してはなりません。しかし、私は世界中に私のパスワードを見られたくありません。
パスワードを世界に表示せずにBeanファイルをコミットするにはどうすればよいですか。
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
を持っていることを確認できます。
プロパティファイルのルックアップをより動的にするためにできることは他にもあります。詳細については、次のリンクを参照してください。