Статические строки @PropertySource @Value возвращают значение null

Активация int и int ForgotPassword работают хорошо, но строковые переменные возвращают значение null, мне нужен статический класс для AppSettings

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

    }

.характеристики

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

person OMANSAK    schedule 14.09.2017    source источник
comment
напишите методы установки и поместите @Value в методы установки вместо того, чтобы помещать переменные   -  person pvpkiran    schedule 14.09.2017
comment
Вы не можете автоматически связать или использовать @Value в static полях/методах.   -  person M. Deinum    schedule 14.09.2017
comment
Если вы хотите определить статическую переменную с помощью аннотации значения, посмотрите этот ответ   -  person Patrick    schedule 14.09.2017


Ответы (2)


Spring не поддерживает @Value внедрение в статические поля.

Вы уверены, что вам определенно требуется "статический класс для AppSettings"? Я подозреваю, что это может означать неправильное понимание того, как работают синглтоны Spring.

Однако если вам действительно нужен "статический класс для AppSettings", вы можете добиться этого следующим образом:

@Value("${CryptoKey}")
public void setCryptoKey(String cryptoKey) {
    AppSettings.CryptoKey = CryptoKey;
} 
person glytching    schedule 14.09.2017

@Value() вызывается при инициализации bean-компонента, bean-компонент инициализируется по необходимости, а не при запуске, поэтому у вас не будет значения, если bean-компонент не инициализирован

person Amer Qarabsa    schedule 14.09.2017