我有一个包含以下行的配置文件:
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。