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注释中看到的那样,我正在寻找“beanify”这个过程。我想要将可枚举作为构造的好处,但我想在我们的 .properties 文件中使其可配置。请记住,包含所有 key=value 对的 .properties 文件在整个站点中被广泛使用。

请记住你的答案;我不想争论已经存在的东西的有效性。(相信我,我理解你的沮丧)。

4

1 回答 1

6

您可以为您的 ValidAddresses 枚举提供设置器,然后使用初始化器,smth like

@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 回答