根据2017年12月的this blog post,可以像以下那样以编程方式更改用于搜索Spring Boot配置文件的名称:
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.properties("spring.config.name:conf")
.build()
.run(args);
}
}
我已尝试使用Spring Boot版本 1.5.9-RELEASE ,但这不起作用。将spring.config.name
设置为参数确实有效:
mvn spring-boot:run -Dspring.config.name=conf
但是,我无法控制在启动时传递给我的Spring Boot应用程序的参数,因此这不是一个选项。
是不可能以编程方式设置spring.config.name
,我错过了什么,还是这个错误?
答案 0 :(得分:1)
没有直接回答这个问题,但我最终发现了一种解决方法。通过将spring.config.name
添加到参数中来设置package com.ups.cep;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
List<String> arguments = new ArrayList<>(Arrays.asList(args));
arguments.add("-Dspring.config.name=conf");
SpringApplication.run(Application.class, arguments.toArray(new String[arguments.size()]));
}
}
确实有效:
EXEC tSQLt.RunAll;
答案 1 :(得分:0)
您的示例适用于我(Spring Boot 2.4.3),因此当时可能是错误。
类似的 SO answer 也使用 SpringApplicationBuilder.properties(String... defaultProperties)
来定义配置名称。
new SpringApplicationBuilder(Application.class)
.properties("spring.config.name:conf")
.build()
.run(args);
我检查了 spring.config.name=conf
和 spring.config.name:conf
,它们都可以工作。