2

私は次のコードを持っています:

package vb4.email;

import org.springframework.beans.factory.annotation.Value;

public enum ValidAddresses {

    // TODO: Is there a cleaner way to switch debugs?
    // How do we make this bean-able?

    @Value("${email.addresses.defaults.support}")
    DEFAULT_SUPPORT_ADDRESS("support@example.com"),
    @Value("${email.addresses.defaults.performance}")
    DEFAULT_PERFORMANCE_SUPPORT_ADDRESS("speed@example.com");

    private final String email;

    private ValidAddresses(final String email){
        this.email = email;
    }

    @Override
    public String toString()
    {
        return this.email;
    }
}

私の注釈からわかるように@Value、私はこのプロセスを「豆化」しようとしています。コンストラクトとしての列挙可能の利点が必要ですが、これを .properties ファイルで構成可能にしたいと考えています。すべての key=value ペアを含む .properties ファイルは、サイト全体で広く使用されていることに注意してください。

回答はそのままにしておいてください。私は、すでに実施されていることの妥当性について議論するつもりはありません。(私はあなたの欲求不満を理解しています)。

4

1 に答える 1

6

ValidAddresses 列挙型のセッターを提供してから、イニシャライザーを使用できます。

@Configurable
public class EnumValueInitializer {

  @Value("${email.addresses.defaults.support}")
  private String support;

  @PostConstruct
  public void postConstruct() {
    initializeAddressesEnum();
  }

  private void initializeAddressesEnum() {
    ValidAddresses.DEFAULT_SUPPORT_ADDRESS.setEmail(support);
  }

}

お役に立てば幸いです。幸運を。

于 2013-07-31T18:53:23.423 に答える