相关疑难解决方法(0)

Spring Boot和多个外部配置文件

我有多个属性文件,我想从类路径加载.有一个默认设置/src/main/resources属于myapp.jar.我springcontext希望文件在类路径上.即

<util:properties id="Job1Props"
    location="classpath:job1.properties"></util:properties>

<util:properties id="Job2Props"
    location="classpath:job2.properties"></util:properties>
Run Code Online (Sandbox Code Playgroud)

我还需要使用外部集覆盖这些属性的选项.我有一个外部配置文件夹cwd.根据spring boot doc配置文件夹应该在classpath上.但是从doc中不清楚它是否只会覆盖applicaiton.propertiesconfig中的那个或所有属性.

当我测试它时,只会application.properties被拾取,其余的属性仍然从中获取/src/main/resources.我已经尝试将它们作为逗号分隔列表提供给spring.config.location但是默认设置仍然没有被覆盖.

如何使多个外部配置文件覆盖默认配置文件?

作为我目前使用的解决方法app.config.location(app特定属性),我通过命令行提供.即

java -jar myapp.jar app.config.location=file:./config
Run Code Online (Sandbox Code Playgroud)

然后我改变applicationcontext

<util:properties id="Job2Props"
    location="{app.config.location}/job2.properties"></util:properties>
Run Code Online (Sandbox Code Playgroud)

这就是我在加载Application时在文件和类路径之间进行分离的方法.
EDITS:

//psuedo code

if (StringUtils.isBlank(app.config.location)) {
            System.setProperty(APP_CONFIG_LOCATION, "classpath:");
}
Run Code Online (Sandbox Code Playgroud)

我真的不想使用上面的解决方法,并让spring覆盖类路径上的所有外部配置文件,就像它对application.properties文件所做的那样.

java spring config spring-boot

110
推荐指数
8
解决办法
34万
查看次数

合并许多application.properties文件而不是Spring Boot上的替换?

我正在使用Spring Booot MVC 1.2.2.RELEASE.我有我的多模块项目,结构如下:

example-backend-development(parent)
---> example-backend-development-domain
---> example-backend-development-service
Run Code Online (Sandbox Code Playgroud)

我想让两个模块独立,或者至少从服务域创建域,因为服务在其类路径中具有域模块.因此,两个模块都将application.properties文件放在各自的资源文件夹中.我想这样做,因为我不想处理来自服务模块的所有属性(例如,属于域模块的Jpa属性).

例如,我在服务模块中有这个application.properties

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.level.com.example.movies: DEBUG
Run Code Online (Sandbox Code Playgroud)

而这一个在域模块中

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sarasa_db
spring.datasource.username=root
spring.datasource.password=mypassword

spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=true
Run Code Online (Sandbox Code Playgroud)

问题是当我启动我的服务时,因为它们都是application.properties在服务类路径中,然后它将来自服务的application.properties替换为来自域的另一个.如果它们具有相同的名称,我想合并它们,就像这种情况一样.这里的春天记录(DEBUG + INFO)

 :: Spring Boot ::        (v1.2.2.RELEASE)

2015-05-12 15:06:24.794 DEBUG 7728 --- [           main] o.s.w.c.s.StandardServletEnvironment     : Adding [servletConfigInitParams] PropertySource with lowest search precedence
2015-05-12 15:06:24.797 DEBUG 7728 --- [           main] o.s.w.c.s.StandardServletEnvironment     : Adding [servletContextInitParams] PropertySource with lowest search precedence
2015-05-12 15:06:24.798 DEBUG 7728 --- [           main] o.s.w.c.s.StandardServletEnvironment     : Adding [systemProperties] PropertySource with lowest search …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-mvc spring-boot

14
推荐指数
1
解决办法
1万
查看次数

如何在Spring中继承application.properties?

如果我创建一个具有application.properties定义通用配置的公共库.喜欢:

spring.main.banner-mode=off

如何将这些属性继承到另一个包含那些公共库的项目中?

Maven的:

<project ...>
    <groupId>de.mydomain</groupId>
    <artifactId>my-core</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <dependency>
            <!-- this one holds the common application.properties -->
            <groupId>my.domain</groupId>
            <artifactId>my-commons</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

我怎样才能继承从配置my-commonsmy-core

java spring spring-boot

12
推荐指数
1
解决办法
6288
查看次数

使用Maven程序集合并属性文件

我有maven程序集插件的问题.

我有一个使用几个罐子的maven项目.每个jar包含配置文件.在另一个项目中,我使用maven程序集插件来组装独特jar中的所有配置.

一切正常,但不幸的是,两个文件名相同,第二个文件覆盖第一个.

我没有实现告诉maven合并两个文件而不是覆盖.

有人知道怎么做吗?

谢谢.

java maven-plugin maven maven-assembly-plugin

11
推荐指数
3
解决办法
2万
查看次数

Spring Boot 应用程序未从依赖的 jar 中获取 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 …
Run Code Online (Sandbox Code Playgroud)

java spring-boot application.properties

6
推荐指数
1
解决办法
6067
查看次数

多模块Maven项目中的Spring Boot配置

我在为多模块Maven项目正确设置Spring Boot时遇到问题。

没有使用另一个模块“核心”的模块“ api”。Api有一个application.properties文件,其中包含spring.mail.host = xxx。根据spring boot文档,这为您提供了JavaMailSender接口的默认实现,可以自动连接。

但是,负责发送电子邮件的类位于“核心”程序包中。当我尝试构建该模块时,构建失败,因为找不到JavaMailSender的实现。

然后我的猜测是,邮件配置应驻留在单独的application.properties的“核心”中。我创建了该文件,并将spring.mail.host属性从“ api”移至“ core”属性文件。

这次核心模块成功构建,但是由于相同的异常,“ api”构建失败,所以我认为我只是提出了问题。

我无法充分理解处理此类情况所需的结构,因此我想知道具有包含所有正确配置的“核心”模块的正确方法是什么,该模块包含用于发送邮件的所有正确配置,并让其他模块使用邮件代码和config驻留在其中。

java spring spring-boot

4
推荐指数
1
解决办法
7712
查看次数