Код: Выделить всё
package foo.bar.baz;
@ConfigurationProperties(prefix = "apns")
public record ApnsConfiguration(
Duration gracefulShutdownTimeout,
int maxAttempts,
Duration minDelay,
Duration maxDelay,
List endpoints
Я пробовал: < /p>
Код: Выделить всё
@Retryable(
retryFor = RetryableException.class,
maxAttemptsExpression = "#{@apnsConfiguration.maxAttempts}",
backoff = @Backoff(
delayExpression =
"#{apnsConfiguration.minDelay.toMillis}",
maxDelayExpression =
"#{@apnsConfiguration.maxDelay.toMillis}",
multiplier = BACKOFF_MULTIPLIER)
)
< /code>
Однако, когда это тестирует (и запуск) сбое с этими ошибками: < /p>
EL1058E: A problem occurred when trying to resolve bean 'apnsConfiguration': 'Could not resolve bean reference against BeanFactory'
org.springframework.expression.spel.SpelEvaluationException: EL1058E: A problem occurred when trying to resolve bean 'apnsConfiguration': 'Could not resolve bean reference against BeanFactory'
[snip]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'apnsConfiguration' available
at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:925)
< /code>
Я не понял, почему он не нашел бобов, поэтому я распечатал имена всех бобов, используя это: < /p>
@EventListener
public void handleContextRefreshed(final ContextRefreshedEvent event) {
Arrays.stream(event.getApplicationContext().getBeanDefinitionNames())
.forEach(name -> log.info("Bean name: {}", name));
}
< /code>
Когда я смотрю на этот вывод, я вижу это: < /p>
Bean name: baz-foo.bar.baz.ApnsConfiguration
< /code>
Итак, я затем изменил весенние выражения, чтобы быть такими, как: < /p>
maxAttemptsExpression = "#{@baz-foo.bar.baz.ApnsConfiguration.maxAttempts}"
В этой распечатку бобов я вижу другие бобы, которые я создал с совершенно нормальными именами. Например, у меня есть < /p>
Код: Выделить всё
@Component
public final class ApnsMessageConverter implements Converter
Код: Выделить всё
maxAttemptsExpression = "#{(@'baz-foo.bar.baz..ApnsConfiguration').maxAttempts}"
Подробнее здесь: https://stackoverflow.com/questions/795 ... expression