如何在 Spring Boot linux 中向类路径提供外部配置资源(数据库属性和 XML 文件)

Posted

技术标签:

【中文标题】如何在 Spring Boot linux 中向类路径提供外部配置资源(数据库属性和 XML 文件)【英文标题】:How to provide External Configuration resources (Database properties and XML files) to classpath in Spring Boot linux 【发布时间】:2019-11-09 00:21:06 【问题描述】:

我一直面临 Spring Boot 中类路径的外部配置文件的问题,但它没有从外部配置文件夹中选择 application.properties、application-dev 属性。它正在从外部配置文件夹中选择数据库属性和 XML 文件。我尝试了以下方法,请你帮我解决这个问题。

java -cp ./config/;./lib/ips--0.0.1-SNAPSHOT.jar java -cp ./config/;./lib/ips-rest-0.0.1-SNAPSHOT.jar java -jar ./lib/ips-rest-0.0.1-SNAPSHOT.jar --spring.config.location=classpath:/config/,file:./config/,classpath:/,file:./

@ImportResource("classpath:ips-spring.xml")
@SpringBootApplication(exclude =  KafkaAutoConfiguration.class )
@ComponentScan(value = "com.mark", useDefaultFilters = false)
@EnableAutoConfiguration
@EnableConfigurationProperties
public class ApplicationRest 
    public static void main(String[] args) 
        System.setProperty("spring.devtools.restart.enabled", "false");
        SpringApplication.run(ApplicationRest.class, args);
        System.out.println("Started ApplicationRest");
    


<context:property-placeholder location="classpath:env.properties,classpath:db.properties" ignore-resource-not-found="false" ignore-unresolvable="false" />
<import resource="classpath:app-entity.xml" />

【问题讨论】:

你试过@PropertySource吗? 【参考方案1】:

我假设“外部配置”是指未打包到 Spring Boot 工件(在您的示例中为 Jar)的配置文件(*.properties*.yml 等)

在这种情况下,根据定义,它们不在应用程序的classpath 中。

也就是说,您是在问如何向 Spring 应用程序提供外部配置文件。正如您已经发现的那样,--spring.config.location 确实是正确的选择:

--spring.config.location=file:/work/config1.yml,file:/work/config2.yml

【讨论】:

我正在使用下面的命令执行一个 spring boot jar。但它没有从外部配置文件夹中选择 db.properties,env.properties。我在执行 cmd 中给出了 --spring.config.location 。但它不是从罐子外面挑选 db.properties。 java -cp /home/ips/ips-rest/config:/home/ips/ips-rest/config/:/home/ips/ips-rest/config/* -jar ips-rest-0.1-SNAPSHOT/lib/ ips-rest-0.0.1-SNAPSHOT.jar 您不需要 -cp。 Spring boot 本身包含相当复杂的类路径结构,与 java 的类路径并不完全一致。运行 java -jar ips-rest.jar --spring.config.location=... 您好,我尝试过以下方法。它只从外部配置文件夹中选择 application.properties,它没有选择其他属性文件.......................... java -jar 。 /lib/ips-rest-0.0.1-SNAPSHOT.jar --spring.config.location=./config/db.properties java -jar ./lib/ips-rest-0.0.1-SNAPSHOT.jar --spring .config.location=classpath:/config/,file:./config/,classpath:/,file:./ java -jar ./lib/ips-rest-0.0.1-SNAPSHOT.jar --spring.config.附加位置=类路径:./config/,file:///./config/

以上是关于如何在 Spring Boot linux 中向类路径提供外部配置资源(数据库属性和 XML 文件)的主要内容,如果未能解决你的问题,请参考以下文章

如何在Spring-boot中向控制器发送一个单元的id

在 Spring Boot 中向本机查询添加参数会导致“org.hibernate.exception.SQLGrammarException”,

Spring Boot 如何部署到 Linux 中的服务

如何将额外的 linux 依赖项添加到 spring-boot buildpack 映像中?

如何在spring mvc中向特定的电子邮件ID发送电子邮件

Spring Boot 轮播全屏 html,css,bootstrap