#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. я проверил статьи. не удалось найти решение этой проблемы. хотя спасибо за информацию