Не удалось устранить ошибку заполнителя при совместном использовании @ConfigurationProperties и @Value

#spring #annotations

#spring #аннотации #примечания

Вопрос:

У нас есть проект springboot MainProject, который использует yaml, Класс main config выглядит примерно так

 @SpringBootApplication(scanBasePackages={"com.xyz.platform"})
@EnableCircuitBreaker
@EnableHystrix
@ImportResource("classpath:spring/beans-xyz-abc.xml")
@ConfigurationProperties(prefix="config.prefix")
@Validated

// this is an external sdk jar. this contains more beans and used @Value 
// annotaion for property binding
@Import(SDKConfiguration.class)
public class AuthorizationDelegationWsApplication  extends SpringBootServletInitializer {
// class code here
}
  

Приведенный выше класс конфигурации импортирует другой внешний класс конфигурации SDK с помощью @Import. Внешний класс SDKConfiguration выглядит примерно так

 @Configuration
@PropertySources({
        @PropertySource(value = { "classpath:client.properties" }, ignoreResourceNotFound = false)
})
@EnableAutoConfiguration
public class SDKConfiguration {
    @Value("${host:}")
    private String host;
// class code here
}
  

Во внешнем SDK есть файл client.properties в пути к классу, а также свойство ‘host’ в нем.
До того, как я добавил внешний класс конфигурации, все шло нормально. Но после того, как я добавил его, запуск службы завершается ошибкой ниже

 Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'host' in value "${host}""
  

Я попытался отредактировать внешний SDK, переместив его в @ConfigurationProperties вместо @Value. Это не вызывает никаких исключений, но я получаю NPE, поскольку «хост» не установлен.

Я попытался изменить ‘host’ на ‘config.prefix.host’. Но бесполезно.

Я думаю, что проблема связана с использованием как @Value, так и @ConfigurationProperties. Но я нигде не смог найти никакой документации.

Пожалуйста, дайте мне знать, какие варианты я могу попробовать.

Комментарии:

1. Привет, Сухеш, посмотри, может ли помочь ссылка ниже: java2novice.com/spring-boot/configurationproperties-vs-value

2. я проверил статьи. не удалось найти решение этой проблемы. хотя спасибо за информацию