2017-09-14 5 views
1

int et int ForgotPassword fonctionne bien, mais les variables de chaîne i besoin de retour nulle classe statique pour AppSettings@PropertySource @value cordes statiques retour Activation 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

méthodes setter d'écriture et de mettre '@ value' sur les méthodes setter à la place de mettre des variables – pvpkiran

+1

Vous ne pouvez pas câbler automatiquement ou utiliser '@ Value' sur les champs/méthodes' static'. –

+0

Si vous souhaitez définir une variable statique à l'aide d'une annotation de valeur, consultez [cette réponse] (https://stackoverflow.com/a/45192557/3493036) – Patrick

Répondre

0

Le printemps ne supporte pas t @Value injection sur statique champs.

Etes-vous sûr que vous avez absolument besoin de une "classe statique pour AppSettings" ? Je soupçonne que cela pourrait représenter un malentendu sur le fonctionnement des singletons de Spring.

Si, cependant, vous avez un réel besoin d'une « classe statique pour AppSettings » vous pouvez y parvenir comme suit:

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

@value() obtient appelé à l'initialisation du bean, le bean est initialisé sur le besoin pas sur le démarrage de sorte que vous n'aurez pas la valeur à moins que le bean est initialisé