2013-10-30 54 views
3

我有包含該線路的配置文件:轉換配置屬性的枚舉值

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); 
    } 
} 

彈簧抱怨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

可能重複的[Java - 將字符串轉換爲枚舉](http://stackoverflow.com/questions/604424/java-convert-string-to-enum) –

+0

它不是這個問題的重複,請參閱編輯。 – thg

+1

所以也許那個http://stackoverflow.com/questions/13030974/spring-how-do-i-inject-enum-in-spring-configuration會有幫助嗎? –

回答

8

Spring自動將輸入字符串轉換爲所需枚舉的相應valueOf。

2

你可以做,通過

LoginMode.valueOf("someString");