0

application.properties ファイルを読み取るために、Spring と jasypt を使用してEncryptablePropertyPlaceholderConfigurerいます。

一部のプロパティ値の末尾に空白が含まれていると、問題が発生することがあります。@Value(${})タグを使用して値を読み取ると、最後に末尾のスペースも取得され、問題が発生します。

現在、クラスEncryptablePropertyPlaceholderConfigurerは最終的なものであるため、拡張できません。文字列値の周りの空白をトリミングした後にプロパティを取得する方法があるかどうかを調べるために、多くのことを検索しました。

このシナリオの処理方法を提案できる人はいますか?

4

2 に答える 2

1

コンストラクターで渡されたカスタム StringEncryptor を使用して EncryptablePropertyPlaceholderConfigurer を作成できます。この CustomStringEncryptor.decrypt() で、trim() を実行します。(この場合、どのプロパティが復号化されているかわかりません)

委任を使用して final をバイパスできます。

class CustomStringEncryptor implements StringEncryptor{
  private StringEncryptor delegate;

  public CustomStringEncryptor(StandardPBEStringEncryptor delegate){
    this.delegate = delegate;
  }

  String decrypt(String encryptedMessage){
    String message = this.delegate.decrypt(encryptedMessage);
    if(null != message) message = message.trim();
    return message;
  }
}
于 2013-08-07T18:45:11.290 に答える
0

だから私は「bellabax」の助けを借りて私の問題に対する答えを見つけました私はプロパティの永続化をオーバーライドし、独自のメソッドを実装しました

propertyConfigurator.setPropertiesPersister(new MyDefaultPropertiesPersister());

    @Override
    public void load(Properties props, InputStream is) throws IOException {

    props.load(is);
    for (Entry<Object, Object> property : props.entrySet()) {
        property.setValue(property.getValue().toString().trim());
    }
}

これで、プロパティの末尾のスペースが削除されました。これが誰かの役に立てば幸いです。

于 2013-08-07T20:10:39.887 に答える