Как автоматически подключить bean-компонент @ConfigurationProperties к выражению SpEL в Spring-boot 2.2. *? - PullRequest
0 голосов
/ 18 июня 2020

Я использую весеннюю загрузку 2.2.6 и, как указано в документации :

Когда bean-компонент @ConfigurationProperties зарегистрирован с использованием сканирования свойств конфигурации или через @EnableConfigurationProperties, bean-компонент имеет условное имя: -, где - префикс ключа среды, указанный в аннотации @ConfigurationProperties, и полное имя компонента. Если в аннотации нет префикса, используется только полное имя bean-компонента.

Имя bean-компонента в приведенном выше примере - acme-com.example.AcmeProperties.

Однако, когда я использую этот SpEL: @Scheduled(fixedDelayString = "#{@(mr-my.config.properties.ApplicationProperties).task.get(T(my.config.Constants).CONST).delay}"), я получаю сообщение об ошибке:

Parameter 0 of constructor in my.controllers.Controller required a bean named 'mr' that could not be found.


Action:

Consider defining a bean named 'mr' in your configuration.

1 Ответ

0 голосов
/ 18 июня 2020
@Scheduled(fixedDelayString = "#{@(mr-my.config.properties.ApplicationProperties).task.get(T(my.config.Constants).CONST).delay}")

@ означает, что вам необходимо предоставить bean-компонент с заданным именем.

@Configuration
class SchedulerConfig{

 @Bean
  public String scheduler1Delay() {
     return "500000s";
  }
}

Теперь установите имя bean-компонента в конфигурации как

@Scheduled(fixedDelayString = "#{@scheduler1Delay}")
...