@Value аннотация загружается только по умолчанию - без использования файла свойств - PullRequest
0 голосов
/ 27 мая 2019

Задача

Мне кажется, что я что-то не правильно понял, потому что мое @Value всегда загружает значение по умолчанию.

Java-код

Итак, у меня есть следующее:

@Value("${disableQuerySecurityDebug:false}")
private boolean disableQuerySecurityDebug;

И это всегда ложно.

Файл свойств: application-disableQuerySecurityDebug.properties

У меня есть файл свойств с именем application-disableQuerySecurityDebug.properties.

И у меня есть следующая запись внутри файла:

disableQuerySecurityDebugMne=true

И я запускаю приложение со следующим профилем: disableQuerySecurityDebugMne

Я ожидал, что значение будет установлено в true, но оно всегда ложно.

Обновление

Основываясь на ответе Дэдпула, я получил следующее:

    @Profile("disableQuerySecurityDebug") @Data
    @Configuration
    public class DisableSecurityConfig implements DisableQuerySecurityDebug {

        @Value("${disableQuerySecurityDebug:true}")
        private boolean securityDisabled;
    }

    @Profile("!disableQuerySecurityDebug") @Data
    @Configuration
    public class EnableSecurityConfig implements DisableQuerySecurityDebug{

        @Value("${disableQuerySecurityDebug:false}")
        private boolean securityDisabled;
    }

    public interface DisableQuerySecurityDebug{
        public boolean isSecurityDisabled();
    }

1 Ответ

1 голос
/ 27 мая 2019

@Value аннотация используется только для добавления значений свойств в Spring Beans из yml или properties файла

Эта аннотация может использоваться для введения значений в поля в Spring-bean-компонентахи его можно применять на уровне параметров поля или конструктора / метода.

Если вы хотите ввести значения, основанные на профиле, используйте @Profile для класса

@Profile("disableQuerySecurityDebug")
@Configuration
public class Config {

 @Value("${disableQuerySecurityDebug:false}")
 private boolean disableQuerySecurityDebug;

  }

Вы также можете указать его в командной строке, используя следующий ключ:

 java -jar demo.jar  --spring.profiles.active=disableQuerySecurityDebug
...