我有以下代码:
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
注释中可以看出,我正在寻找“bean化”这个过程。我希望枚举的好处作为构造,但我想在我们的.properties文件中进行配置。请记住,具有所有key = value对的.properties文件在整个站点中被广泛使用。
请保留你的答案;我不打算辩论已经存在的有效性。 (相信我,我理解你的沮丧)。
答案 0 :(得分:6)
您可以为ValidAddresses枚举提供setter,然后使用初始化程序,例如
@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);
}
}
我希望它会有所帮助。祝你好运。