将配置属性转换为枚举值

时间:2013-10-30 09:39:55

标签: java spring enums

我有一个包含以下行的配置文件:

login.mode=PASSWORD

和枚举

public enum LoginMode {
PASSWORD, NOT_PASSWORD, OTHER }

和一个春豆

<bean id="environment" class="a.b.c.Environment" init-method="init">
  <property name="loginMode" value="${login.mode}"/>
</bean>

当然是bean类

public class Environment {
    private LoginMode loginMode;

    public LoginMode getLoginMode() {
        return loginMode;
    }

    public void setLoginMode(LoginMode loginMode) {
        this.loginMode = loginMode;
    }
}

如何将配置文件的属性(即String)转换为LoginMode的相应枚举值?

编辑:我知道如何获取字符串输入的枚举值,但问题是另一个问题: 如果我试试这个:

public class Environment {
    private LoginMode loginMode;

    public LoginMode getLoginMode() {
        return loginMode;
    }

    public void setLoginMode(String loginMode) {
        this.loginMode = LoginMode.valueOf(loginMode);
    }
}

spring抱怨getter和setter没有相同的输入和输出类型。

Bean property 'loginMode' is not writable or has an invalid setter method. Does the    parameter type of the setter match the return type of the getter?

3 个答案:

答案 0 :(得分:11)

Spring会自动将输入字符串转换为所需枚举的相应valueOf。

答案 1 :(得分:2)

你可以通过

来做到这一点
LoginMode.valueOf("someString");

答案 2 :(得分:2)