【问题标题】:Converting configuration properties to enum values将配置属性转换为枚举值
【发布时间】:2013-10-30 09:39:54
【问题描述】:

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

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?

【问题讨论】:

标签: java spring enums


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以这样做

    LoginMode.valueOf("someString");
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 我必须在哪里转换字符串?在 bean 配置中还是在环境类中?
      猜你喜欢
      • 1970-01-01
      • 2019-02-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2020-08-21
      • 2021-01-04
      • 2012-11-12
      相关资源
      最近更新 更多