@ConfigurationProperites не привязывается к источнику свойств после обновления до Spring Cloud Hoxton.SR7 - PullRequest
1 голос
/ 05 августа 2020

У меня есть класс @ConfigurationProperties, который больше не привязан к источнику свойств YML, который разрешается через Spring Cloud Config после обновления до Hoxton.SR7. Этот код отлично работает с Hoxton.SR4 с последней версией Spring Boot 2.2.9.RELEASE. Теперь мои свойства не привязаны, и я получаю NPE, когда пытаюсь ссылаться на них. Ниже приведен снимок моего кода:

@Configuration
public class MyConfiguration {

  @Bean
  public MyPropertiesBean myPropertiesBean() {
    return new MyPropertiesBean(); 
  }

}
@ConfigurationProperties(prefix = "com.acme.properties")
@Validated
public class MyPropertiesBean {
  ...
}

In src/main/resources/META-INF/spring.factories:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.acme.MyConfiguration

Любые идеи, почему мой @ConfigurationProperties класс не связывается после обновления Spring Cloud кому: Hoxton.SR7?

1 Ответ

0 голосов
/ 05 августа 2020

Вы смешиваете два способа привязки свойств: класс и метод.

Использование метода и @Bean аннотации:

@Configuration
public class MyConfiguration {

  @Bean
  @ConfigurationProperties(prefix = "com.acme.properties")
  @Validated
  public MyPropertiesBean myPropertiesBean() {
    return new MyPropertiesBean(); 
  }

}

Это создаст MyPropertiesBean и сохранит его внутри контекста приложения для внедрения.

Объявление bean-компонента уровня класса также создает для вас bean-компонент:

@Configuration
@ConfigurationProperties(prefix = "com.acme.properties")
@Validated
public class MyPropertiesBean {
  ...
}

Это также будет хранить bean-компонент.

Хотя, вы должны получить ошибку времени выполнения, когда попытаетесь ввести MyPropertiesBean, поскольку теперь в вашем случае есть два bean-компонента одного типа, и Spring не может разрешить только тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...