0

以下はhibernate-config.xmlファイルの私のBeanです

<bean id="myDataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
        <property name="url" value="jdbc:mysql://${indy.web.database.host}:${indy.web.database.port}/${indy.web.database.name}" />
        <property name="user" value="${indy.web.database.login}" />
        <property name="password" value="${indy.web.database.password}" />
    </bean>

${} 内のすべての値は、プロパティ ファイルから取得され、自動的に設定されます。しかし、プロパティファイルのパスワードは暗号化されているため、復号化してから設定したいと考えています。これを行う方法?

4

3 に答える 3

0

これを実現する簡単な方法は、ビルド プロパティ プレースホルダー コンフィギュアラーの代わりに、jasypt が提供するプロパティ プレースホルダー コンフィギュアラーを使用することです。

<bean id="propertyConfigurer"
  class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
 <constructor-arg ref="configurationEncryptor" />
 <property name="locations">
  <list>
    <value>/WEB-INF/classes/application.properties</value>
   </list>
  </property>
 </bean>

このページで利用可能な完全な構成の詳細 - http://www.jasypt.org/spring3.html

于 2013-05-16T10:19:19.447 に答える
0

「パスワード」値をデコードして返す Spring FactoryBean を定義します。ファクトリ Bean は、オブジェクトの作成だけでなく、値の回答/計算にも使用できます。

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/FactoryBean.html

Spring 構成で Bean を参照すると、回答された値が得られます。

Properties オブジェクトの値が必要で、そうでなければ取得できない場合は、デコードされた値を構成済みのプロパティに組み込む Properties ファクトリを作成できます。

于 2013-05-16T12:20:25.533 に答える
0

クラスで MysqlDataSource をサブクラス化する

このようなもの:

public class DatasourceWithEncPass extends MysqlDataSource{
   public void setPassword(String passowrd){
     //decrypt the password here before setting it
   }
 ..
}

このクラスをコンテキストで使用します。

    <bean id="myDataSource" class="com.yourpackage.DatasourceWithEncPass">
        <property name="url" value="jdbc:mysql://${indy.web.database.host}:${indy.web.database.port}/${indy.web.database.name}" />
        <property name="user" value="${indy.web.database.login}" />
        <property name="password" value="${indy.web.database.password}" />
    </bean>
于 2013-05-16T16:10:35.523 に答える