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

login.mode=PASSWORD

和一个枚举
public enum LoginMode {
PASSWORD, NOT_PASSWORD, OTHER }

和一个 Spring Bean
<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;
    }
}

如何将配置文件的属性(字符串)转换为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?

最佳答案

Spring自动将输入String转换为所需枚举的相应valueOf。

09-27 15:43