jer*_*emy 6 java spring-boot application.properties
我有两个 Spring Boot 应用程序。第一个是 API 库,它作为依赖 jar 被拉入第二个(Web 应用程序)。
第一个是 API 库,其中包含在 IBM 解决方案中创建“案例”的函数。它是一个独立的类型 jar,具有一个服务类,该服务类公开 getCaseXMLForDocId(String docId) 或 createCaseForAgreementNumber(StringgreementNumber) 等方法
第一个名为 CaseInitationAPI 的库有一个 application.properties 文件,其中包含多个属性。例如:
caseinvocation.query.fetchNonProcessedCaseXml=SELECT Id, CaptureSource, AgreementNumber, CaptureSourceID FROM CaseInvocation WHERE ProcessIndicator IN (0, 2)
Run Code Online (Sandbox Code Playgroud)
服务类有一个进行查询的方法,从使用 application.properties 文件中的属性填充的成员变量中获取查询字符串:
@Value("${caseinvocation.query.fetchNonProcessedCaseXml}")
private String selectNonProcessedQueryString;
Run Code Online (Sandbox Code Playgroud)
第二个 SpringBoot 应用程序是一个具有 REST 控制器的 Web 应用程序。这些控制器公开调用 CaseInitationAPI 库(特别是 CaseInitationService 类)的端点。
我遇到的问题是,当 SpringBoot WEBAPPLICATION 启动时,上下文配置会崩溃,并出现以下错误:
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
Run Code Online (Sandbox Code Playgroud)
看来,当 WebApp 启动时,当它尝试从依赖的 jar 构建类时,找不到这些属性。
我认为我不必将依赖 jar application.properties 文件中的每个属性复制到 Webapp 项目中的 application.properties 文件中。
为什么 WebApp 项目 (CaseInitationWebApp) 不从依赖的 jar 文件 (CaseInitationAPI) 中获取 application.properties 文件?
我检查了编译后的 jar 文件(CaseInitationAPI),并且 application.properties 文件位于 jar 中。
看起来问题与子 jar 和 web 应用程序都有 application.properties 文件这一事实有关。我不知道父 WebApp application.properties 会覆盖其他内容(实际上忽略所有其他内容)。
特别感谢帕斯乔尔的回应。
您可以在此处查看答案的详细信息: Adding multiple application.properties files
| 归档时间: |
|
| 查看次数: |
6067 次 |
| 最近记录: |