У меня есть два приложения весенней загрузки. Первая - это библиотека API, которая помещается во вторую (веб-приложение) как зависимый файл.
Во-первых, это библиотека API, которая содержит функции для создания «дел» в решении IBM. Это jar автономного типа, который имеет класс обслуживания, который предоставляет такие методы, как getCaseXMLForDocId (String docId) или createCaseForAgreementNumber (String AgreementNumber)
Первая библиотека с именем CaseInvocationAPI имеет файл application.properties, который имеет несколько свойств. Например:
caseinvocation.query.fetchNonProcessedCaseXml=SELECT Id, CaptureSource, AgreementNumber, CaptureSourceID FROM CaseInvocation WHERE ProcessIndicator IN (0, 2)
В классе обслуживания есть метод, который делает запрос, извлекая эту строку запроса из переменной-члена, которая заполняется свойством из файла application.properties:
@Value("${caseinvocation.query.fetchNonProcessedCaseXml}")
private String selectNonProcessedQueryString;
Второе приложение SpringBoot - это веб-приложение с контроллерами REST. Эти контроллеры предоставляют конечные точки, которые вызывают библиотеку CaseInvocationAPI, в частности класс CaseInvocationService.
Проблема, с которой я столкнулся, заключается в том, что при запуске WEBAPPLICATION в SpringBoot конфигурация контекста взрывается со следующей ошибкой:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'caseinvocation.query.fetchNonProcessedCaseXml' in string value "${caseinvocation.query.fetchNonProcessedCaseXml}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:219)
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:193)
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer$2.resolveStringValue(PropertySourcesPlaceholderConfigurer.java:172)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:813)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1039)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
... 45 common frames omitted
Похоже, что при запуске WebApp, когда онпытаясь собрать классы из зависимого фляги, эти свойства не найдены.
Я не думал, что мне нужно было копировать каждое свойство из зависимого файла jar application.properties в файл application.properties в проекте Webapp.
Почему проект WebApp (CaseInvocationWebApp) не извлекает файл application.properties из зависимого файла JAR (CaseInvocationAPI)?
Я проверил скомпилированный файл jar (CaseInvocationAPI) и файл application.properties находится там в jar.