6

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

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>

当然还有一个豆类

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?
4

3 回答 3

16

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

于 2013-10-30T10:14:26.630 回答
3

你可以这样做

LoginMode.valueOf("someString");
于 2013-10-30T09:41:57.250 回答
2
 LoginMode.valueOf(valueOfProperty);

编辑:尝试使用转换器 http://docs.spring.io/spring/docs/3.0.0.RC2/reference/html/ch05s05.html http://forum.spring.io/forum/spring-projects/web/ 83191-custom-enum-string-converters

EDIT2:还检查一下: How assign bean's property an Enum value in Spring config file?

于 2013-10-30T09:42:37.780 回答