Spring Boot Version 2.1.4 RELEASE
У меня есть клиентский jar с бином настроек, определенным как
@ConditionalOnBean(annotation = Some.class)
@ConfigurationProperties(prefix = "service")
@Data
public class WebserviceSettings {
//bunch of Properties
private String serviceUrl;
@PostConstruct
public void init() { if(serviceUrl==null) throw ValidationException("bla") }
}
Another Config Class
@ConditionalOnBean(annotation = Some.class)
@EnableConfigurationProperties(WebserviceSettings.class)
@Configuration
public class ClientConfig{
@Bean("webserviceSettings")
public WebserviceSettings webserviceSettings(){
return new WebserviceSettings();
}
}
Клиентский jar добавлен к сервису весенней загрузки.
Тест JUNIT, написанный для клиентского jar, работаетв порядке и загружает Бин без каких-либо проверочных исключений, выходящих из метода PostConstruct.
Тестовый класс, написанный на клиенте, работает!
@RunWith(SpringRunner.class)
@SpringBootTest(classes = { ClientTestBootApplication.class })
@TestPropertySource(properties="spring.config.location=classpath:application-test.yaml")
Однако, когда я загружаю Spring Boot Service- не удается загрузить bean-компонент Settings с ValidationException, выданным из метода PostConstruct.
application.yml
service:
url: "bla"
Это означает, что когда клиент добавляется в проект сервисов, он не загружает свойство из yaml.Как решить эту проблему?
Структура проекта
spring-boot-restEasy Application
- src/main/resources/application-DEV.yml
--client jar A
--client jar B
Клиентский jar = [Сервисный вызов и некоторая бизнес-логика], application-DEV.yml Содержит параметры обслуживания клиентского Jar, такие как url
Exception
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'service-packagName.Settings': Invocation of init method failed; nested exception is ValidationException: [url cannot be Null]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:414)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1754)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1247)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1167)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
... 52 more