我有一个包含以下行的配置文件:
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?
答案 0 :(得分:11)
Spring会自动将输入字符串转换为所需枚举的相应valueOf。
答案 1 :(得分:2)
你可以通过
来做到这一点LoginMode.valueOf("someString");
答案 2 :(得分: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?