2017-09-14 7 views
1

int型のアクティベーションを返し、ForgotPasswordが良い動作しますが、文字列変数はnullを返し、私はのAppSettings@PropertySource @value静的な文字列がnull

@PropertySource("classpath:appSettings.properties") 
    public class AppSettings { 

     @Value("${Activation}") 
     private static int Activation; 
     @Value("${ForgotPassword}") 
     private static int ForgotPassword; 
     @Value("${CryptoSplit}") 
     private static String CryptoSplit; 
     @Value("${CryptoKey}") 
     private static String CryptoKey; 

     public static String getCryptoSplit() { 
      return CryptoSplit; 
     } 

     public static String getCryptoKey() { 
      return CryptoKey; 
     } 
     public static int getActivation() { 
      return Activation; 
     } 

     public static int getForgotPassword() { 
      return ForgotPassword; 
     } 

    } 

の.properties

Activation=0 
ForgotPassword=1 
CryptoSplit=:OSK: 
CryptoKey=TheBestSecretKey 
+1

書き込みsetterメソッドを、代わりにセッターメソッドに[値] @ '入れます変数を置くこと – pvpkiran

+1

静的なフィールド/メソッドに対して '@ Value'を自動配線することはできません。 –

+0

値の注釈を使用して静的変数を定義する場合は、[この回答](https://stackoverflow.com/a/45192557/3493036)をご覧ください。 – Patrick

答えて

0

春はサプリメンタルt @Valueへの注入静的フィールド。

確かににはが「静的クラスのAppSettings」が必要ですか?私はそれがSpringのシングルトンがどのように機能するかについての誤解を表していると思われます。

、しかし、あなたが「のAppSettingsの静的クラス」のために本物の必要性を持っている場合は、次のように、あなたはこれを達成することができます

@Value("${CryptoKey}") 
public void setCryptoKey(String cryptoKey) { 
    AppSettings.CryptoKey = CryptoKey; 
} 
0

@value()を取得するための静的クラスが必要int型Beanの初期化時に呼び出されるBeanは、起動時に初期化される必要がなくなると初期化されるため、Beanが初期化されない限り値を保持しません。

関連する問題